17、Python之paramikomo
一、简介
paramiko是一个基于SSH用于连接远程服务器并执行相关操作(SSHClient和SFTPClinet,即一个是远程连接,一个是上传下载服务),使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。
二、准备
由于paramiko模块不是系统自带的模块,所以需要引入,在pycharm中引入paramiko模块的步骤如下:
三、使用paramiko连接远程服务器
1、基于用户名和密码的连接
1 import paramiko 2 #创建SSH对象 3 ssh = paramiko.SSHClient() 4 # 允许连接不在know_hosts文件中的主机 5 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 6 #连接服务器 7 ssh.connect(hostname="192.168.172.132",port=22,username="root",password="123") 8 stdin,stdout,stderr = ssh.exec_command("ls") 9 result = stdout.read() 10 err_result = stderr.read() 11 if result: 12 print(result.decode("utf-8")) 13 elif err_result: 14 print(err_result.decode())
2、基于公钥秘钥的连接
1、生成公钥秘钥:在linux中使用命令生成公钥和私钥。命令生成的公钥和私钥在目录下面,将私钥的文件拷贝到客户端,然后就可以通过公钥私钥的方式连接服务器了,代码如下:
1 import paramiko 2 private_key = paramiko.RSAKey.from_private_key_file("rsa.txt") #读取私钥 3 ssh = paramiko.SSHClient() 4 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 5 ssh.connect(hostname="192.168.172.132",port=22,username="root",pkey=private_key) 6 stdin,stdout,stderr = ssh.exec_command("df") 7 result = stdout.read() 8 print(result.decode()) 9 ssh.close()
3、远程文件上传和下载
1 import paramiko 2 3 transport = paramiko.Transport(("192.168.172.132",22)) 4 transport.connect(username="root",password="123") 5 sftp = paramiko.SFTPClient.from_transport(transport) 6 # sftp.put("F:/key.txt","/temp") #上传 7 sftp.get("/home/gwx/.ssh/id_rsa","F:/mywork/ts.txt")#下载 8 transport.close()