用法1,SSHClient
分别可以使用密码和秘钥登陆,然后执行命令,并且获取执行结果
import paramiko #创建一个SSH对象 ssh = paramiko.SSHClient() #允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #通过用户名和密码去连接服务器 ssh.connect(hostname="127.0.0.1",port=22,username="xxxxx",password="123") #执行命令,stdin是输入,stdout是正常的输入,stderr是错误的输出,这里正常的输出 #和错误的只能有一个有值 stdin,stdout,stderr = ssh.exec_command("df") #获取命令结果 res = stdout.read() res = stderr.read() ssh.close() # 上面是基于用户名密码访问ssh,其实还可以通过秘钥去访问ssh #创建一个SSH对象 ssh = paramiko.SSHClient() priv_key = paramiko.RSAKey.from_private_key_file("ke用的路径") #允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #通过秘钥去连接服务器 ssh.connect(hostname="127.0.0.1",port=22,username="xxxxx",pkey=priv_key) #执行命令,stdin是输入,stdout是正常的输入,stderr是错误的输出,这里正常的输出 #和错误的只能有一个有值 stdin,stdout,stderr = ssh.exec_command("df") #获取命令结果 res = stdout.read() res = stderr.read() ssh.close()
用法2,transport,上传和下载文件
import paramiko transport = paramiko.Transport(("hostname",22)) #通过用户名密码去连接 transport.connect(username="xxxx",password="123") sftp = paramiko.SFTPClient.from_transport(transport) #把本地文件上传到远程 sftp.put("/tmp/local/xxxx.py","tmp/test.py") #把远程文件下载到本地 sftp.get("remove_path","local_path") #关闭transport transport.close()
时间: 2024-10-15 10:12:44