您的位置:首页 > 编程语言 > Python开发

python安装需要安装paramiko模块

2013-10-06 00:10 423 查看
一、介绍
1.最近手头有个脚本用于远程批量传输文件的。由于系统本身环境兼容不是很好,所以开始升级配置环境。
2.paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux,Solaris,BSD,MacOSX,Windows等,paramiko都可以支持,因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系列的操作时,paramiko是最佳工具之一。
二、安装
1.由于centos5.9的版本是2.4.3的,所以首先得将python进行升级。
wgethttp://down1.chinaunix.net/distfiles/Python-2.7.3.tar.bz2tarjxvfPython-2.7.3.tar.bz2 ./configure--prefix=/usr/local/Python-2.7.3/ make&&makeinstall mv/usr/bin/python/usr/bin/python_old ln-s/usr/local/Python-2.7.3/bin/python/usr/bin/python2.以上对python进行了升级。下面开始安装paramiko模块,安装paramiko模块需要先安装PyCrypto的模块。

wgethttp://down1.chinaunix.net/distfiles/pycrypto-2.0.1.tar.gztarzxvfpycrypto-2.0.1.tar.gz pythonsetup.pyinstall3.安装完PyCrypto的模块后,开始安装
wgethttp://down1.chinaunix.net/distfiles/paramiko-1.5.4.zipunzipparamiko-1.5.4.zip pythonsetup.pyinstall pythontest.py((在paramiko的目录下))4.安装完这些之后。基本就算完成了。下面就是测试下。
[root@localhostparamiko-1.7.6]#pythontest.py ...........................................................................................................9s9s.........5s1s.........13s.........5s...................................... ---------------------------------------------------------------------- Ran108testsin129.948s OK 出现这样的就表示成功了,我们再测试一把。[root@localhost~]#python Python2.7.3(default,Oct22013,03:25:17) [GCC4.1.220080704(RedHat4.1.2-54)]onlinux2 Type"help","copyright","credits"or"license"formoreinformation. >>>importparamiko >>> 呵呵,这样就安装成功了三:使用paramiko

如果大家感觉安装paramiko还是略有麻烦的话,当使用到paramiko提供的方便时便会觉得这是十分值得的。
下面是两种使用paramiko连接到linux服务器的代码
方式一:
ssh=paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect("某IP地址",22,"用户名","口令")
上面的第二行代码的作用是允许连接不在know_hosts文件中的主机。

方式二:
t=paramiko.Transport((“主机”,”端口”))t.connect(username=“用户名”,password=“口令”)
如果连接远程主机需要提供密钥,上面第二行代码可改成:
t.connect(username=“用户名”,password=“口令”,hostkey=”密钥”)
下面给出实际的例子:
3.1windows对linux运行任意命令,并将结果输出
如果linux服务器开放了22端口,在windows端,我们可以使用paramiko远程连接到该服务器,并执行任意命令,然后通过print或其它方式得到该结果,
代码如下:
#!/usr/bin/python
importparamiko
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"用户名","口令")
stdin,stdout,stderr=ssh.exec_command("你的命令")
printstdout.readlines()
ssh.close()其中的”你的命令”可以任意linux支持的命令,如一些常用的命令:
df:查看磁盘使用情况uptime:显示系统运行时间信息cat:显示某文件内容mv/cp/mkdir/rmdir:对文件或目录进行操作/sbin/service/xxxservicestart/stop/restart:启动、停止、重启某服务netstat-ntl|grep8080:查看8080端口的使用情况或者nc-zvlocalhost:查看所有端口的使用情况find/-nameXXX:查找某文件这样一来,对于linux的任何操作几乎都可以通过windows端完成,如果对该功能进行引申,还可以同时管理多台服务器。

3.2从widnows端下载linux服务器上的文件
#!/usr/bin/pythonimportparamikot=paramiko.Transport((“主机”,”端口”))t.connect(username=“用户名”,password=“口令”)sftp=paramiko.SFTPClient.from_transport(t)remotepath=’/var/log/system.log’localpath=’/tmp/system.log’sftp.get(remotepath,localpath)t.close()
3.3从widnows端上传文件到linux服务器
#!/usr/bin/python
importparamiko
t=paramiko.Transport((“主机”,”端口”))
t.connect(username=“用户名”,password=“口令”)
sftp=paramiko.SFTPClient.from_transport(t)
remotepath=’/var/log/system.log’
localpath=’/tmp/system.log’
sftp.put(localpath,remotepath)
t.close()本文出自“泡不到妞的可憐蟲”博客,请务必保留此出处http://sunway.blog.51cto.com/3776215/1305003
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: