Python之paramiko模块
今天我们来了解一下python的paramiko模块
paramiko是python基于SSH用于远程服务器并执行相应的操作。
我们先在windows下安装paramiko
1.cmd下用pip安装paramiko(python的版本用的anaconda的3.6,自带pip)
pip install paramiko
试一下,安装成功
但是这个时候在ide里运行是有问题的,因为Python中使用SSH需要用到OpenSSH,而OpenSSH依赖于paramiko模块,而paramiko模块又依赖于pycrypto模块,因此要在Python中使用SSH。所以我们需要先安装pycrypto工具,然后再安装paramiko模块才能使用。
但是pycrypto已经停止了对3.2以上版本python的支持,怎么办?
这时候可以查到一个新的模块,pycryptodome,该模块支持3.6以上版本的python。直接用pip安装
pip install pycryptodome
安装完成,就可以正常使用使用paramiko模块了
先做一个最基础的ssh客户端
1 import paramiko 2 ssh = paramiko.SSHClient() 3 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 4 ssh.connect(hostname='192.168.233.129',port=22,username='root',password='aaronchang') 5 while True: 6 cmd = input('>>>') 7 if len(cmd) == 0:continue 8 stdin,stdout,stderr = ssh.exec_command(cmd) 9 res,err = stdout.read(),stderr.read() 10 result = res if res else err 11 print(result.decode()) 12 ssh.close()
从这里就可以当作连虚拟机里的linux了!但要注意的一点:输入的指令必须是有返回值的并且不能是top这种不停刷新的指令(top -bn1还是可以的!!)。
然后我们可以在python里用paramiko做一个sftp了!
1 import paramiko 2 transport = paramiko.Transport('IP',port) 3 transport.connect(username='这里填Linux的用户名',password='填用户的登陆密码') 4 sftp = paramiko.SFTPClient.from_transport(transport)#实力和sftp的客户端 5 sftp.put(r'D:\123.txt','/windowsfile/test') #上传文件sftp.put(要上传的文件,目标路径) 6 sftp.get('/windowsfile/from_linux.txt','test2')#下载文件sftp.get(要get的文件的路径,本地路径)