原文链接:http://www.cnblogs.com/saneri/p/5715661.html
Win7下Python2.7环境安装paramiko模块,经过安装并测试成功,整理文档如下:
1.下载安装Windows版本的Python2.7,我默认装在C:\Python27
我的python已经安装,这里不做python2.7的安装步骤的详解
2.下载PyCrypto2.6 for Python 2.7 64bit
地址为: http://www.voidspace.org.uk/python/modules.shtml#pycrypto
以管理员权限执行安装程序,一路Next即可
3.下载安装ecdsa-0.10.tar.gz
地址: https://pypi.python.org/packages/source/e/ecdsa/ecdsa-0.10.tar.gz 并解压缩
进入安装目录,执行 python setup.py install
(我的ecdsa是解压到桌面的,进入dos命令执行 如下命令即可)
1
2
3
|
C:\Users\Administrator>cd Desktop\ecdsa-0.10
C:\Users\Administrator\Desktop\ecdsa-0.10>python setup.py install
|
4.下载paramiko压缩包
地址为:https://pypi.python.org/packages/source/p/paramiko/paramiko-1.13.0.tar.gz
解压缩后从cmd进入解压缩目录,执行命令
1
2
3
|
C:\Users\Administrator>cd Desktop\paramiko-1.13.0
C:\Users\Administrator\Desktop\paramiko-1.13.0>python setup.py install
|
5.确认安装成功
在cmd中执行C:\Python27\python进入python环境,输入import paramiko无错误提示则表示安装成功!
如何使用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.1 windows对linux运行任意命令,并将结果输出
如果linux服务器开放了22端口,在windows端,我们可以使用paramiko远程连接到该服务器,并执行任意命令,然后通过 print或其它方式得到该结果,
代码如下:
#!/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支持的命令,如一些常用的命令:
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((“主机”,”端口”)) 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 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()