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 相关文章推荐
python远程登录代码
Apr 29 Python
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
Python实现视频下载功能
Mar 14 Python
python3+PyQt5自定义视图详解
Apr 24 Python
Python中pillow知识点学习
Apr 30 Python
python numpy 显示图像阵列的实例
Jul 02 Python
Django添加sitemap的方法示例
Aug 06 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
Aug 13 Python
对python while循环和双重循环的实例详解
Aug 23 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
python如何操作mysql
Aug 17 Python
如何用六步教会你使用python爬虫爬取数据
Apr 06 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的单引号和双引号 字符串效率
2009/05/27 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
JS验证码实现代码
2017/09/14 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
Python中关于字符串对象的一些基础知识
2015/04/08 Python
python字典get()方法用法分析
2015/04/17 Python
python 调用c语言函数的方法
2017/09/29 Python
python生成excel的实例代码
2017/11/08 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
pytorch中的inference使用实例
2020/02/20 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
三年级科学教学反思
2014/01/29 职场文书
ktv中秋节活动方案
2014/01/30 职场文书
旷课检讨书3000字
2014/02/04 职场文书
广播体操比赛口号
2014/06/10 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
求职意向书范本
2015/05/11 职场文书
2019年最新借条范本!
2019/07/08 职场文书
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers