Python使用paramiko连接远程服务器执行Shell命令的实现


Posted in Python onMarch 04, 2021

需求

自动化测试场景里, 有时需要在代码里获取远程服务器的某些数据, 或执行一些查询命令,如获取Linux系统版本号 \ 获取CPU及内存的占用等, 本章记录一下使用paramiko模块SSH连接服务器的方法

1. 先安装paramiko库

pip3 install paramiko

2. 代码

#!/usr/bin/env python
# coding=utf-8

"""
# :author: Terry Li
# :url: https://blog.csdn.net/qq_42183962
# :copyright: © 2020-present Terry Li
# :motto: I believe that the God rewards the diligent.
"""
import paramiko

class cfg:
	host = "192.168.2.2"
	user = "root"
	password = "123456"


class sshChannel:
	def __init__(self, cfg_obj, timeout_s=5, port=22):
		self._cfg = cfg_obj
		self.ssh_connect_timeout = timeout_s
		self.port = port
		self.ssh = self.connect_server()

	def connect_server(self):
		ssh_cli = paramiko.SSHClient()
		key = paramiko.AutoAddPolicy()
		ssh_cli.set_missing_host_key_policy(key)
		try:
			ssh_cli.connect(self._cfg.host, port=self.port, username=self._cfg.user, password=self._cfg.password,
							timeout=self.ssh_connect_timeout)
		except paramiko.ssh_exception.SSHException:
			print("连接{}失败, 请检查配置或重试".format(self._cfg.host))
			ssh_cli.close()
		return ssh_cli

	def execute_cmd(self, cmd):
		"""
		:param cmd: 单个命令
		:return: 服务器的输出信息
		"""
		stdin, stdout, stderr = self.ssh.exec_command(cmd)
		self.ssh.close()
		return stdout.read().decode('utf-8')

	def execute_cmd_list(self, cmd_list):
		"""
		:param cmd: 命令列表
		:return: 服务器的输出信息的列表
		"""
		out_list = list(map(self.execute_cmd, cmd_list))
		return out_list

	def test_get_sys_version(self):
		sys_version = self.execute_cmd("lsb_release -rd")
		print(sys_version)

	def test_get_sys_disk_free_and_memory_free(self):
		sys_info = self.execute_cmd_list(["df -h -BG /", "free -m"])
		print(sys_info)
		
if __name__ == '__main__':
	server = sshChannel(cfg)
	server.test_get_sys_version()
	server.test_get_sys_disk_free_and_memory_free()

到此这篇关于Python使用paramiko连接远程服务器执行Shell命令的实现的文章就介绍到这了,更多相关Python使用paramiko连接远程服务器执行Shell命令内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用pytorch进行图像的顺序读取方法
Jul 27 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
Django实现单用户登录的方法示例
Mar 28 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
Aug 24 Python
python实现LRU热点缓存及原理
Oct 29 Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 Python
Python变量作用域LEGB用法解析
Feb 04 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
Python 定义只读属性的实现方式
Mar 05 Python
Python批量安装卸载1000个apk的方法
Apr 10 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
Jun 29 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
Sep 03 Python
Python 调用C++封装的进一步探索交流
Mar 04 #Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 #Python
Python与C/C++的相互调用案例
Mar 04 #Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 #Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 #Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 #Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 #Python
You might like
PHP简单系统查询模块代码打包下载
2008/06/07 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
php标签云的实现代码
2012/10/10 PHP
php时区转换转换函数
2014/01/07 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
jquery获取radio值实例
2014/10/16 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
师德师风整改措施
2014/10/24 职场文书
入党转正申请报告
2015/05/15 职场文书
环保建议书作文300字
2015/09/14 职场文书
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技
Golang连接并操作MySQL
2022/04/14 MySQL