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

浙公网安备 33010602011771号