博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python paramiko
阅读量:6947 次
发布时间:2019-06-27

本文共 2787 字,大约阅读时间需要 9 分钟。

一、开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作。

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

  1、基于公钥密钥连接 

1 #!/usr/bin/python 2 # -*- coding : utf-8 -*- 3 # 作者: Presley 4 # 时间: 2018-11-28 5 # 邮箱:1209989516@qq.com 6 # 这是我用来练习python paramiko的测试脚本 7  8 import paramiko 9 10 private_key = paramiko.RSAKey.from_private_key_file("/home/wohaoshuai/.ssh/id_rsa") #指定密钥文件路径11 12 #创建SSH对象13 ssh = paramiko.SSHClient()14 15 #允许连接不在know_hosts文件中的主机16 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())   #跳过询问yes或no步骤17 18 #连接服务器19 ssh.connect(hostname="192.168.10.44",port=22,username="wohaoshuai",key=private_key)20 21 #执行命令22 stdin,stdout,stderr = ssh.exec_command("df")23 24 #获取命令结果25 result,err = stdout.read() , stderr.read()26 if not err:27     print(result)28 else:print(err)29 #关闭连接30 ssh.close()

2、基于用户名密码验证 

1 #!/usr/bin/python 2 # -*- coding : utf-8 -*- 3 # 作者: Presley 4 # 时间: 2018-11-28 5 # 邮箱:1209989516@qq.com 6 # 这是我用来练习python paramiko的测试脚本 7  8 import paramiko 9 10 #创建SSH对象11 ssh = paramiko.SSHClient()12 13 #允许连接不在know_hosts文件中的主机14 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())   #跳过询问yes或no步骤15 16 #连接服务器17 ssh.connect(hostname="192.168.10.44",port=22,username="root",password="123456")18 19 #执行命令20 stdin,stdout,stderr = ssh.exec_command("df")21 22 #获取命令结果23 result,err = stdout.read().decode("utf-8") , stderr.read().decode("utf-8")24 if not err:25     print(result)26 else:print(err)27 #关闭连接28 ssh.close()

3、使用filter装逼

1 # -*- coding : utf-8 -*- 2 # 作者: Presley 3 # 时间: 2018-12-08 4 # 邮箱:1209989516@qq.com 5 # 这是我用来练习mysql操作的测试脚本 6  7 import paramiko 8  9 import paramiko10 11 #创建SSH对象12 ssh = paramiko.SSHClient()13 14 #允许连接不在know_hosts文件中的主机15 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())   #跳过询问yes或no步骤16 17 #连接服务器18 ssh.connect(hostname="192.168.10.44",port=22,username="root",password="123456")19 20 #执行命令21 stdin,stdout,stderr = ssh.exec_command("df")22 23 #获取命令结果24 25 result = list(filter(lambda x: x is not None,[stdout.read().decode("utf-8"),stderr.read().decode("utf-8")]))[0] #将后面列表中的两个值赋值给x,如果x不为None则留在列表中,否则就过滤掉26 print(result)27 # result,err = stdout.read().decode("utf-8") , stderr.read().decode("utf-8")28 # if not err:29 #     print(result)30 # else:print(err)31 #关闭连接32 ssh.close()

三、上传和下载文件

1 # -*- coding : utf-8 -*- 2 # 作者: Presley 3 # 时间: 2018-12-08 4 # 邮箱:1209989516@qq.com 5 # 这是我用来练习mysql操作的测试脚本 6  7  8 import paramiko 9 10 transport = paramiko.Transport(('192.168.10.44',22))11 transport.connect(username="root",password="123456")12 sftp = paramiko.SFTPClient.from_transport(transport)13 14 #将当前路径aaa.txt上传至服务器 /tmp/test.py15 sftp.put("aaa.txt","/tmp/test.py")16 17 #将/tmp/test.py下载到本地当前路径下的bbb.txt18 sftp.get("/tmp/test.py","bbb.txt")19 20 transport.close()

 

  

转载于:https://www.cnblogs.com/Presley-lpc/p/10034262.html

你可能感兴趣的文章
了解大数据的特点、来源与数据呈现方式
查看>>
spring 组件扫描配置说明component-scan
查看>>
Clarke and five-pointed star
查看>>
设计模式系列2-----C++实现责任链模式(Chain of Responsibility)
查看>>
20189312任方园《网络攻防》第六次作业
查看>>
php
查看>>
职场人的“存在主义”哲学
查看>>
在路上【我与51CTO的故事】
查看>>
演示:外部全局地址与外部局部地址的使用案例
查看>>
Exchange Server 2013 公网发布疑难解答
查看>>
Oracle 12c dataguard云上挖坑记--为某机场贵宾业务部署oracle 12c到云端
查看>>
前端开发在不久的将来定会成为主导
查看>>
jQuery内ready与load事件的区别
查看>>
[笔记].关于Stratix III使用非易失加密后,无法正常配置启动的问题探讨
查看>>
一个通用的单元测试框架的思考和设计03-实现篇-核心类源码
查看>>
载入史册 改变IT安全历程的十大里程碑
查看>>
UVA 624 CD
查看>>
Windows phone 7: DataBinding and UI Refresh系列教程
查看>>
矩阵快速幂 学习笔记
查看>>
linux iconv 批量转码
查看>>