Python paramiko模块使用解析(实现ssh)


Posted in Python onAugust 30, 2019

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

安装paramiko模块

pip3 install paramiko

基于用户密码方式

import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname="10.0.0.200", port=22, username='root', password='1')

# 执行命令
# stdin:标准输入(就是你输入的命令);stdout:标准输出(就是命令执行结果);stderr:标准错误(命令执行过程中如果出错了就把错误打到这里),stdout和stderr仅会输出一个
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = (stdout.read().decode('utf-8'))  # 这个有问题,如果执行的命令是错误的,会不显示错误,可以修改一下,先判断stdout有没有值,如果输出没有,就显示错误
print(result)
# 关闭连接
ssh.close()

基于公钥密钥连接

import paramiko

# 指定私钥路径
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.0.0.171', port=22, username='root', pkey=private_key)

# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode())
# 关闭连接
ssh.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Django框架中运行Python应用全攻略
Jul 17 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
用python实现k近邻算法的示例代码
Sep 06 Python
python修改字典键(key)的方法
Aug 05 Python
Python 面向对象部分知识点小结
Mar 09 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
Python实现PS滤镜中的USM锐化效果
Dec 04 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
详解Python调用系统命令的六种方法
Jan 28 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 #Python
python实现生成Word、docx文件的方法分析
Aug 30 #Python
python解析yaml文件过程详解
Aug 30 #Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 #Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 #Python
python 命令行传入参数实现解析
Aug 30 #Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 #Python
You might like
php中的常用魔术方法总结
2013/08/02 PHP
教大家制作简单的php日历
2015/11/17 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
更改Python命令行交互提示符的方法
2015/01/14 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
python基于ID3思想的决策树
2018/01/03 Python
Python简单基础小程序的实例代码
2019/04/28 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
联强国际笔试题面试题
2013/07/10 面试题
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
学期研究性学习个人的自我评价
2014/01/09 职场文书
办公室岗位职责
2014/02/12 职场文书
母亲节感恩寄语
2014/02/21 职场文书
会议简讯范文
2015/07/20 职场文书
2016党员党课心得体会
2016/01/07 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
在js中修改html body的样式
2021/11/11 Javascript