#科技一把手#用Python远程登陆服务器的最佳实践( 三 )
importparamiko#建立连接trans=paramiko.Transport((''xx.xx.xx.xx'',22))trans.connect(username=''root'',password=''you_passwd'')#将sshclient的对象的transport指定为以上的transssh=paramiko.SSHClientssh._transport=trans#剩下的就和上面一样了ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)ssh_stdin,ssh_stdout,ssh_stderr=ssh.exec_command(''ls-l'')print(ssh_stdout.read)#关闭连接trans.close
方法3:基于公钥密钥的SSHClient方式登录
importparamiko#指定本地的RSA私钥文件#如果建立密钥对时设置的有密码 , password为设定的密码 , 如无不用指定password参数pkey=paramiko.RSAKey.from_private_key_file('/home/you_username/.ssh/id_rsa',password='12345')#建立连接ssh=paramiko.SSHClientssh.connect(hostname='xx.xx.xx.xx',port=22,username='you_username',pkey=pkey)#执行命令stdin,stdout,stderr=ssh.exec_command('ls-l')#结果放到stdout中 , 如果有错误将放到stderr中print(stdout.read)#关闭连接ssh.close
方法4:基于密钥的Transport方式登录
importparamiko#指定本地的RSA私钥文件#如果建立密钥对时设置的有密码 , password为设定的密码 , 如无不用指定password参数pkey=paramiko.RSAKey.from_private_key_file('/home/you_username/.ssh/id_rsa',password='12345')#建立连接trans=paramiko.Transport(('xx.xx.xx.xx',22))trans.connect(username='you_username',pkey=pkey)#将sshclient的对象的transport指定为以上的transssh=paramiko.SSHClientssh._transport=trans#执行命令 , 和传统方法一样stdin,stdout,stderr=ssh.exec_command('df-hl')print(stdout.read.decode)#关闭连接trans.close
以上四种方法 , 可以帮助你实现远程登陆服务器执行命令 , 如果需要复用连接:一次连接执行多次命令 , 可以使用方法二和方法四 。
用完后 , 记得关闭连接 。
实现sftp文件传输
同时 , paramiko做为ssh的完美解决方案 , 它非常专业 , 利用它还可以实现sftp文件传输 。
【#科技一把手#用Python远程登陆服务器的最佳实践】importparamiko#实例化一个trans对象#实例化一个transport对象trans=paramiko.Transport(('xx.xx.xx.xx',22))#建立连接trans.connect(username='you_username',password='you_passwd')#实例化一个sftp对象,指定连接的通道sftp=paramiko.SFTPClient.from_transport(trans)#发送文件sftp.put(localpath='/tmp/11.txt',remotepath='/tmp/22.txt')#下载文件sftp.get(remotepath='/tmp/22.txt',localpath='/tmp/33.txt')trans.close
到这里 , Paramiko已经完胜了 , 但是仍然有一个痛点我们没有提及 , 就是多平台 , 说的就是Windows , 这里就有一件好事 , 一件坏事了 ,。
好事就是:paramiko支持windows坏事就是:你需要做很多复杂的准备 , 你可google解决 , 但是我建议你直接放弃 , 坑太深了 。

文章图片

文章图片
写在最后
经过了一番对比 , 和一些实例的展示 , 可以看出Paramiko是一个专业、让人省心的ssh利器 , 个人认为Paramiko模块是运维人员必学模块之一 , 如果你恰好需要在Python代码中实现ssh到远程服务器去获取一些信息 , 那么我把Paramiko推荐给你 。
推荐阅读
- 「定焦爱科技」3拯救低电量焦虑症,超大电池搭配超快闪充,续航出色的iQOO
- #科技小李#小屏爱好者嗨起来,4.7寸新iPhone确认四月发布,价格是大亮点!,原创
- 中国网科技@撤出液晶面板生产,三星将关闭两座工厂
- #即科技#107国赞同票作废!,想“加入”联合国?中国使用一票否决
- 【腾讯科技】全球应用市场第一季度大爆发:花费达234亿美元创纪录 时长增20%
- 即科技■决定权掌握在中国手,?联合国五常将变六常?此国获美俄一致力挺
- [笔记本电脑]乙辰科技正式发布首款WiFi6新品:北斗II号分布式无线路由器
- 『极速聊科技』目前仅剩10余人,暴风集团:员工持续大量流失
- 【科技生活快报】普京:已与欧佩克和美国就石油价格下跌问题进行讨论
- 「科技小数据」消费信贷的客户呈现出年轻化的趋势,新消费崛起
