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=‘x.x.x.x‘, port=22, username=‘xiaoli, password=‘123456‘) 9 10 # 执行命令 11 stdin, stdout, stderr = ssh.exec_command(‘df‘) 12 # 获取命令结果 13 result = stdout.read() 14 15 # 关闭连接 16 ssh.close()
基于封装的transport的连接
1 import paramiko 2 3 #1 创建transport对象 4 transport = paramiko.Transport((‘x.x.x.x‘, 22)) 5 transport.connect(username=‘xiaoli‘, password=‘123456‘) 6 7 ssh = paramiko.SSHClient() 8 ssh._transport = transport 9 10 stdin, stdout, stderr = ssh.exec_command(‘df‘) 11 print stdout.read() 12 13 transport.close()
基于公钥密钥连接
1 跟密码连接差不多,只是密码的地方变成了私钥 2 3 import paramiko 4 5 #私钥路径 6 private_key = paramiko.RSAKey.from_private_key_file(‘/home/auto/.ssh/id_rsa‘) 7 8 # 创建SSH对象 9 ssh = paramiko.SSHClient() 10 # 允许连接不在know_hosts文件中的主机 11 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 12 # 连接服务器 13 ssh.connect(hostname=‘x.x.x.x, port=22, username=‘xiaoli, key=private_key) 14 15 # 执行命令 16 stdin, stdout, stderr = ssh.exec_command(‘df‘) 17 # 获取命令结果 18 result = stdout.read() 19 20 # 关闭连接 21 ssh.close()
基于封装的transport的连接
1 同理,跟上边的差不多 2 3 import paramiko 4 5 private_key = paramiko.RSAKey.from_private_key_file(‘/home/auto/.ssh/id_rsa‘) 6 7 transport = paramiko.Transport((‘x.x.x.x‘, 22)) 8 transport.connect(username=‘xiaoli‘, pkey=private_key) 9 10 ssh = paramiko.SSHClient() 11 ssh._transport = transport 12 13 stdin, stdout, stderr = ssh.exec_command(‘df‘) 14 15 transport.close()
时间: 2024-10-18 14:11:41