paramiko模块

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。

举个常见的例子,现有这样的需求:远程连接到Linux服务器,查看上面的日志状态,大家通常使用的方法会是:

1:用telnet 2:用PUTTY 3:用WinSCP 4:用XManager等…

如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,使用paramiko可以很好的解决问题,它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助。
二:安装

安装paramiko有两个先决条件,python python-devel和另外一个名为PyCrypto的模块。

1:安装python 2.4以上版本
安装PyCrypto:

2:https://www.dlitz.net/software/pycrypto/

python setup.py build

python setup.py install
3:下载paramiko,地址是http://www.lag.net/paramiko/
python setup.py build

python setup.py install
三: 使用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.1 对linux运行任意命令,并将结果输出

代码如下:

#!/usr/bin/python import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"用户名", "口令")
stdin, stdout, stderr = ssh.exec_command("你的命令")print stdout.readlines()
ssh.close()
其中的”你的命令”可以任意linux支持的命令,如一些常用的命令:

/sbin/service/ xxxservice start/stop/restart:启动、停止、重启某服务
netstat -ntl |grep 8080:查看8080端口的使用情况
这样一来,对于linux的任何操作几乎都可以通过客户端完成,如果对该功能进行引申,还可以同时管理多台服务器。

 

3.2 下载linux服务器上的文件

#!/usr/bin/python import paramiko
t = 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 上传文件到linux服务器

#!/usr/bin/python import paramiko

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()

posted @ 2016-04-12 17:11  ppppppy  阅读(115)  评论(0)    收藏  举报