Paramiko模块用于使用SSH连接远程服务器,执行命令和文件的上传下载
执行命令,返回命令的结果
1 import paramiko 2 3 # 创建SSH对象 4 ssh = paramiko.SSHClient() 5 # 允许连接不在know_hosts文件中的主机 6 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 7 # 连接服务器 8 ssh.connect(hostname='172.16.0.109', port=22, username='root', password='xile99hang') 9 10 # 执行命令 11 stdin, stdout, stderr = ssh.exec_command('pwd') 12 # 获取命令结果 13 #result = filter(lambda x: x is not None,[stdout.read(),stderr.read()])(0) 14 result = stdout.read() 15 print(result) 16 17 # 关闭连接 18 ssh.close() 19 20 #结果 b'/root '
基于公钥密钥的连接
1 import paramiko 2 3 private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa') 4 5 # 创建SSH对象 6 ssh = paramiko.SSHClient() 7 # 允许连接不在know_hosts文件中的主机 8 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 9 # 连接服务器 10 ssh.connect(hostname='172.16.0.109', port=22, username='root', key=private_key) 11 12 # 执行命令 13 stdin, stdout, stderr = ssh.exec_command('df') 14 # 获取命令结果 15 result = stdout.read() 16 17 # 关闭连接 18 ssh.close()
上传和下载文件
1 import paramiko 2 3 transport = paramiko.Transport(('172.16.0.109',22)) 4 transport.connect(username='root',password='xile99hang') 5 6 sftp = paramiko.SFTPClient.from_transport(transport) 7 # 将location.py 上传至服务器 /tmp/test.py 8 sftp.put('/tmp/location.py', '/tmp/test.py') 9 # 将remove_path 下载到本地 local_path 10 sftp.get('remove_path', 'local_path') 11 12 transport.close()