一、使用
SSHClient:用于连接远程服务器并执行基本命令
1.基于用户名密码连接
1.使用SSH帮我们创建transport对象
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='192.168.124.32',port=22,username='name',password='') # 22是默认端口 9 10 # 执行命令 11 stdin,stdout,stderr = ssh.exec_command('1s') 12 # 获取命令结构 13 result = stdout.read() 14 # 关闭连接 15 ssh.close()
2.自己创建transport对象
1 import paramiko 2 3 transport = paramiko.Transport(('hostname',22)) 4 transport.connect(username='name',password='') 5 6 ssh.paramiko.SSHClient() 7 ssh._transport = transport # 创建对象 8 9 stdin,stdout,stderr = ssh.exec_command('df') 10 print(stdout.read()) 11 12 transport.close()
2.用公共密钥进行连接
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.shh/id_rsa') # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='192.168.124.32',port=22,username='name',password='') # 22是默认端口 # 执行命令 stdin,stdout,stderr = ssh.exec_command('1s') # 获取命令结构 result = stdout.read() # 关闭连接 ssh.close()
SFTPClient:用于连接远程服务器并执行基本命令(只能用transport连接)
1.基于用户密码的上传和下载
import paramiko transport = paramiko.Transport(('hostname',22)) transport.connect(username='name',password='') sftp = paramiko.SFTPClient.from_transport(transport) # 将location.py上传到服务器/tmp/test.py sftp.put('/tmp/将location.py','/tmp/test.py') # 将remove_path 下载到本地 local_path sftp.get('remove_path','local_path') transport.close()
2.基于公钥密钥上传下载:(同上)
二、多条命令或操作同时使用
把连接、上传、下载、执行命令、关闭....等操作创建成方法,再合成一个类,通过对对象的操作来执行想要的功能