目录
paramiko安装原因解决执行命令 -秘钥上传下载文件—用户名密码上传下载文件-用户名秘钥paramiko
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。
安装
pip install paramiko
模块使用
(资料图片)
执行命令—用户名+密码
#!/usr/bin/env python #coding:utf-8 import paramiko # 建立一个sshclient对象 ssh = paramiko.SSHClient() # 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 调用connect方法连接服务器 ssh.connect("192.168.1.108", 22, "alex", "123") # 执行命令 stdin, stdout, stderr = ssh.exec_command("df") # 结果放到stdout中,如果有错误将放到stderr中 print(stdout.read().decode("utf-8")) # 关闭连接 ssh.close();
paramiko\ecdsakey.py:164: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
self.ecdsa_curve.curve_class(), pointinfoparamiko\kex_ecdh_nist.py:39: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
m.add_string(self.Q_C.public_numbers().encode_point())paramiko\kex_ecdh_nist.py:96: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
self.curve, Q_S_bytesparamiko\kex_ecdh_nist.py:111: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
hm.add_string(self.Q_C.public_numbers().encode_point())
原因
paramiko 2.4.2 依赖 cryptography,而最新的cryptography==2.5里有一些弃用的API。
解决
删掉cryptography,安装2.4.2,就不会报错了。
pip uninstall cryptography
pip install cryptography==2.4.2
执行命令 -秘钥
import paramiko private_key_path = "/home/auto/.ssh/id_rsa" key = paramiko.RSAKey.from_private_key_file(private_key_path) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect("主机名 ", 端口, "用户名", key) stdin, stdout, stderr = ssh.exec_command("df") print(stdout.read().decode("utf-8")) ssh.close()
上传下载文件—用户名密码
import os,sys import paramiko t = paramiko.Transport(("182.92.219.86",22)) t.connect(username="derek",password="123") sftp = paramiko.SFTPClient.from_transport(t) sftp.put("/tmp/test.py","/tmp/test.py") t.close() import os,sys import paramiko t = paramiko.Transport(("182.92.219.86",22)) t.connect(username="derek",password="123") sftp = paramiko.SFTPClient.from_transport(t) sftp.get("/tmp/test.py","/tmp/test2.py") t.close()
上传下载文件-用户名秘钥
import paramiko pravie_key_path = "/home/auto/.ssh/id_rsa" key = paramiko.RSAKey.from_private_key_file(pravie_key_path) t = paramiko.Transport(("182.92.219.86",22)) t.connect(username="derek",pkey=key) sftp = paramiko.SFTPClient.from_transport(t) sftp.put("/tmp/test3.py","/tmp/test3.py") t.close() import paramiko pravie_key_path = "/home/auto/.ssh/id_rsa" key = paramiko.RSAKey.from_private_key_file(pravie_key_path) t = paramiko.Transport(("182.92.219.86",22)) t.connect(username="derek",pkey=key) sftp = paramiko.SFTPClient.from_transport(t) sftp.get("/tmp/test3.py","/tmp/test4.py") t.close()
以上就是python paramiko连接ssh实现命令的详细内容,更多关于python paramiko连接ssh的资料请关注脚本之家其它相关文章!
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单