Python的paramiko模块,该模块基于SSH,用于连接远程服务器并执行相关操作

SSHClient

用于连接远程服务器并执行基本命令

基于用户名密码连接:

import paramiko# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='c1.salt.com', port=22, username='Julia', password='123')# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()# 关闭连接
ssh.close()

SSHClient封装Transport

import paramikotransport = paramiko.Transport(('hostname', 22))
transport.connect(username='Julia', password='123')ssh = paramiko.SSHClient()
ssh._transport = transportstdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()transport.close()

基于公钥密钥连接:

import paramikoprivate_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='c1.salt.com', port=22, username='Julia', key=private_key)# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()# 关闭连接
ssh.close()

基于私钥字符串进行连接

import paramiko
from io import StringIOkey_str = """-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAq7gLsqYArAFco02/55IgNg0r7NXOtEM3qXpb/dabJ5Uyky/8
NEHhFiQ7deHIRIuTW5Zb0kD6h6EBbVlUMBmwJrC2oSzySLU1w+ZNfH0PE6W6fans
H80whhuc/YgP+fjiO+VR/gFcqib8Rll5UfYzf5H8uuOnDeIXGCVgyHQSmt8if1+e
7hn1MVO1Lrm9Fco8ABI7dyv8/ZEwoSfh2C9rGYgA58LT1FkBRkOePbHD43xNfAYC
tfLvz6LErMnwdOW4sNMEWWAWv1fsTB35PAm5CazfKzmam9n5IQXhmUNcNvmaZtvP
c4f4g59mdsaWNtNaY96UjOfx83Om86gmdkKcnwIDAQABAoIBAQCnDBGFJuv8aA7A
ZkBLe+GN815JtOyye7lIS1n2I7En3oImoUWNaJEYwwJ8+LmjxMwDCtAkR0XwbvY+
c+nsKPEtkjb3sAu6I148RmwWsGncSRqUaJrljOypaW9dS+GO4Ujjz3/lw1lrxSUh
IqVc0E7kyRW8kP3QCaNBwArYteHreZFFp6XmtKMtXaEA3saJYILxaaXlYkoRi4k8
S2/K8aw3ZMR4tDCOfB4o47JaeiA/e185RK3A+mLn9xTDhTdZqTQpv17/YRPcgmwz
zu30fhVXQT/SuI0sO+bzCO4YGoEwoBX718AWhdLJFoFq1B7k2ZEzXTAtjEXQEWm6
01ndU/jhAasdfasdasdfasdfa3eraszxqwefasdfadasdffsFIfAsjQb4HdkmHuC
OeJrJOd+CYvdEeqJJNnF6AbHyYHIECkj0Qq1kEfLOEsqzd5nDbtkKBte6M1trbjl
HtJ2Yb8w6o/q/6Sbj7wf/cW3LIYEdeVCjScozVcQ9R83ea05J+QOAr4nAoGBAMaq
UzLJfLNWZ5Qosmir2oHStFlZpxspax/ln7DlWLW4wPB4YJalSVovF2Buo8hr8X65
lnPiE41M+G0Z7icEXiFyDBFDCtzx0x/RmaBokLathrFtI81UCx4gQPLaSVNMlvQA
539GsubSrO4LpHRNGg/weZ6EqQOXvHvkUkm2bDDJAoGATytFNxen6GtC0ZT3SRQM
WYfasdf3xbtuykmnluiofasd2sfmjnljkt7khghmghdasSDFGQfgaFoKfaawoYeH
C2XasVUsVviBn8kPSLSVBPX4JUfQmA6h8HsajeVahxN1U9e0nYJ0sYDQFUMTS2t8
RT57+WK/0ONwTWHdu+KnaJECgYEAid/ta8LQC3p82iNAZkpWlGDSD2yb/8rH8NQg
9tjEryFwrbMtfX9qn+8srx06B796U3OjifstjJQNmVI0qNlsJpQK8fPwVxRxbJS/
pMbNICrf3sUa4sZgDOFfkeuSlgACh4cVIozDXlR59Z8Y3CoiW0uObEgvMDIfenAj
98pl3ZkCgYEAj/UCSni0dwX4pnKNPm6LUgiS7QvIgM3H9piyt8aipQuzBi5LUKWw
DlQC4Zb73nHgdREtQYYXTu7p27Bl0Gizz1sW2eSgxFU8eTh+ucfVwOXKAXKU5SeI
+MbuBfUYQ4if2N/BXn47+/ecf3A4KgB37Le5SbLDddwCNxGlBzbpBa0=
-----END RSA PRIVATE KEY-----"""private_key = paramiko.RSAKey(file_obj=StringIO(key_str))
transport = paramiko.Transport(('10.0.1.40', 22))
transport.connect(username='wupeiqi', pkey=private_key)ssh = paramiko.SSHClient()
ssh._transport = transportstdin, stdout, stderr = ssh.exec_command('df')
result = stdout.read()transport.close()print(result)

SFTPClient

用于连接远程服务器并执行上传下载

基于用户名密码上传下载

import paramikotransport = paramiko.Transport(('hostname',22))
transport.connect(username='Julia',password='123')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()

基于公钥密钥上传下载

import paramikoprivate_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')transport = paramiko.Transport(('hostname', 22))
transport.connect(username='Julia', pkey=private_key )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()

Python全栈工程师(15:Socket编程4-paramiko模块和SSH秘钥)相关推荐

  1. 案例驱动python编程入门-郑州高薪python全栈工程师

    阶段一.Python 全栈工程师之必知必会 - 前端开发技术 课程一.入门必备 - 新手学 HTML5+CSS3 1.HTML基本标签 2.W3C标准及XHTML1.0基本规范 3.表格.表单及框架 ...

  2. Python全栈工程师-第15周-韦玮-专题视频课程

    Python全栈工程师-第15周-382人已学习 课程介绍         Python全栈工程师-第15周 课程收益     Python全栈工程师 讲师介绍     韦玮 更多讲师课程     企 ...

  3. 2017最新整理python全栈工程师系统培训之路精品课程(全套)

    百度搜索"一起自学吧"做大数据专家,不做第一,只做唯一. 课程介绍: 本课程由一起自学吧论坛打造,目的是给想成为Python全栈工程师的同学提供一套完整,全面而系统的培训课程,课程 ...

  4. Python全栈工程师-第1周-韦玮-专题视频课程

    Python全栈工程师-第1周-1583人已学习 课程介绍         Python全栈工程师-第1周 课程收益     Python全栈工程师培养课程 讲师介绍     韦玮 更多讲师课程    ...

  5. Python 全栈工程师必备面试题 300 道(2020 版)

    2020元旦巨献,面试升级必备!献给正在学习Python的同学! Python 全栈工程师必备面试题 300 道(2020 版) Python 面试不仅需要掌握 Python 基础知识和高级语法,还会 ...

  6. 匠人之心,成就真正Python全栈工程师

    Python行业现状 Python在2017年世界脚本语言排行榜中 Python排名第1,也是多领域首选语言,掌握了Python就是掌握了未来. Python人才需求量 世界编程语言排行榜之Pytho ...

  7. 视频教程-Python全栈工程师特训班第十一期-直播回放-Python

    Python全栈工程师特训班第十一期-直播回放 专注提供优质教学内容 CSDN就业班 ¥13800.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取 ...

  8. python全栈工程师薪水_不止 20K,Python 工程师薪资再飙升(内附转型指南)

    原标题:不止 20K,Python 工程师薪资再飙升(内附转型指南) Python 诞生之初就被誉为最容易上手的编程语言.进入火热的 AI 人工智能时代后,它也逐渐取代 Java,成为编程界的头牌语言 ...

  9. 大龄开发者究竟该何去何从?2019年Python全栈工程师,都是开发人员改怎么转向高收入?

    是继续做技术还是"强迫"自己转型做管理? 作者 | Petr Zemek 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 很多人因为喜欢 ...

  10. python全栈工程师薪水_python全栈+爬虫+自动化+AI=python全能工程师-挑战年薪30W+

    如果你想选择一种语言来入门编程,那么Python绝对是首选! Python非常接近自然语言,精简了很多不必要的分号和括号,非常容易阅读理解.编程简单直接,更适合初学编程者,让其专注于编程逻辑,而不是困 ...

最新文章

  1. ggbiplot-最好看的PCA作图:样品PCA散点+分组椭圆+变量贡献与相关
  2. 云巡更系统 云设备巡检 电子云签到
  3. css按钮居中_你不一定知道的CSS最小和最大(宽度/高度)知识点及优缺点
  4. linux修改非root用户密码永不过期
  5. python——语音信号读取、分帧、加窗
  6. apache.commons.beanutils javabean转MapStirng,String对象
  7. java 围棋_围棋冠军都输了?用Java编写的智能围棋战力惊人?
  8. https免费泛域名证书申请
  9. 量化城市︱计算机视觉技术在街道品质量化评估中的应用
  10. 感知器 - 西瓜好坏自动识别——python
  11. 读取xslx文件(一)
  12. 每天一个俯卧撑的健身法 - 微习惯实践
  13. 2020东南大学网络空间安全复试经验分享
  14. session到底是什么
  15. 漏洞分析——Race_Condition
  16. HDMI设计2----EDID and E-EDID
  17. 科学研究机构管理系统
  18. android 文本转语音
  19. Java后端学习视频和资源分享
  20. USB学习4-libusb的使用

热门文章

  1. Java微信开发_Exception_02_errcode:40164,errmsg:invalid ip 61.172.68.219, not in whitelist hint...
  2. oracle 存储过程语法
  3. inventor 波纹阵列_Inventor技巧之草图驱动的阵列
  4. PIXHAWK飞控的外部控制
  5. gzip and deflate
  6. 甘肃地形图之陇右地形分析、DEM数据下载
  7. RS422-485接口电路设计要点
  8. 《近匠》从Cubieboard到radxa:汤亮的第二次硬件创业
  9. synchronized 和 AQS
  10. 妙用CSS变量,让你的CSS变得更心动