paramiko模块安装和使⽤(远程登录服务器)
⼀:简介
由paramiko是⽤python语⾔写的⼀个模块,遵循SSH2协议,⽀持以加密和认证的⽅式,进⾏远程服务器的连接。
由于使⽤的是python这样的能够跨平台运⾏的语⾔,所以所有python⽀持的平台,如Linux, Solaris, BSD, MacOS X, Windows等,paramiko都可以⽀持,因此,如果需要使⽤SSH从⼀个平台连接到另外⼀个平台,进⾏⼀系列的操作
时,paramiko是最佳⼯具之⼀。
举个常见的例⼦,现有这样的需求:需要使⽤windows客户端,远程连接到Linux服务器,查看上⾯的⽇志状态,⼤家通常使⽤的⽅法会是:
1:⽤telnet
2:⽤PUTTY
3:⽤WinSCP
4:⽤XManager等…
那现在如果需求⼜增加⼀条,要从服务器上下载⽂件,该怎么办?那常⽤的办法可能会是:
1:Linux上安装FTP并配置
2:Linux上安装Sambe并配置…
⼤家会发现,常见的解决⽅法都会需要对远程服务器必要的配置,如果远程服务器只有⼀两台还好说,如果有N台,还需要逐台进⾏配置,或者需要使⽤代码进⾏以上操作时,上⾯的办法就不太⽅便了。
使⽤paramiko可以很好的解决以上问题,⽐起前⾯的⽅法,它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进⾏复杂的连接操作特别有帮助。
⼆:安装
安装paramiko有两个先决条件,python和另外⼀个名为PyCrypto的模块。
通常安装标准的python模块,只需要在模块的根⽬录下运⾏:
复制代码代码如下:
python setup.py build
python setup.py install
以上两条命令即可,paramiko和PyCrypto也不例外,唯⼀⿇烦的就是安装PyCrypto时,需要GCC库编译,如果没有GCC库会报错,会导致PyCrypto以及paramiko⽆法安装。
以下以32 位的windows XP为例,说明paramiko的安装过程
1:安装python,2.2以上版本都可以,我使⽤的是2.5,安装过程略,并假设安装⽬录是c:\python。
复制代码代码如下:
[build]
compiler=mingw32
3:下载PyCrypto ,地址是
安装PyCrypto:
解压缩
在dos下进⼊解压缩的⽬录,运⾏
复制代码代码如下:
C:\ setup.py build
C:\ setup.py install
安装测试
运⾏,在提⽰符下输⼊:
复制代码代码如下:
Import  Crypto
如果没有出现错误提⽰,说明Crypto安装成功
解压缩
在dos下进⼊解压缩的⽬录,运⾏
复制代码代码如下:
C:\ setup.py build
C:\ setup.py install
测试paramiko
运⾏,在提⽰符下输⼊:
复制代码代码如下:
Import  paramiko
如果没有出现错误提⽰,说明paramiko安装成功
三:使⽤paramiko
如果⼤家感觉安装paramiko还是略有⿇烦的话,当使⽤到paramiko提供的⽅便时便会觉得这是⼗分值得的。下⾯是两种使⽤paramiko连接到linux服务器的代码
⽅式⼀:
复制代码代码如下:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
上⾯的第⼆⾏代码的作⽤是允许连接不在know_hosts⽂件中的主机。
⽅式⼆:
复制代码代码如下:
t = paramiko.Transport((“主机”,”端⼝”))
telnet远程登录配置
如果连接远程主机需要提供密钥,上⾯第⼆⾏代码可改成:
复制代码代码如下:
下⾯给出实际的例⼦:
3.1 windows对linux运⾏任意命令,并将结果输出
如果linux服务器开放了22端⼝,在windows端,我们可以使⽤paramiko远程连接到该服务器,并执⾏任意命令,然后通过print或其它⽅式得到该结果,
复制代码代码如下:
#!/usr/bin/python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
stdin, stdout, stderr = _command("你的命令")
adlines()
ssh.close()
其中的”你的命令”可以任意linux⽀持的命令,如⼀些常⽤的命令:
df:查看磁盘使⽤情况
uptime:显⽰系统运⾏时间信息
cat:显⽰某⽂件内容
mv/cp/mkdir/rmdir:对⽂件或⽬录进⾏操作
/sbin/service/ xxxservice start/stop/restart:启动、停⽌、重启某服务
netstat -ntl |grep 8080:查看8080端⼝的使⽤情况
或者 nc -zv localhost :查看所有端⼝的使⽤情况
find / -name XXX:查某⽂件
这样⼀来,对于linux的任何操作⼏乎都可以通过windows端完成,如果对该功能进⾏引申,还可以同时管理多台服务器。
3.2 从widnows端下载linux服务器上的⽂件
复制代码代码如下:
#!/usr/bin/python
import paramiko
t = paramiko.Transport((“主机”,”端⼝”))
sftp = paramiko.SFTPClient.from_transport(t)
remotepath='/var/log/system.log'
localpath='/tmp/system.log'
<(remotepath, localpath)
t.close()
3.3 从widnows端上传⽂件到linux服务器
复制代码代码如下:
#!/usr/bin/python
import paramiko
t = paramiko.Transport((“主机”,”端⼝”))
sftp = paramiko.SFTPClient.from_transport(t)
remotepath='/var/log/system.log'
localpath='/tmp/system.log'
sftp.put(localpath,remotepath)
t.close()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。