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 相关文章推荐
Python进程通信之匿名管道实例讲解
Apr 11 Python
Python下载懒人图库JavaScript特效
May 28 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
requests和lxml实现爬虫的方法
Jun 11 Python
python实现人脸识别代码
Nov 08 Python
详解Python文件修改的两种方式
Aug 22 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
使用Pandas将inf, nan转化成特定的值
Dec 19 Python
详解Python中namedtuple的使用
Apr 27 Python
Selenium 安装和简单使用的实现
Dec 04 Python
详解Python 3.10 中的新功能和变化
Apr 28 Python
如何使用flask将模型部署为服务
May 13 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
Wordpress php 分页代码
2009/10/21 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
php查询操作实现投票功能
2016/05/09 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
Angular 如何使用第三方库的方法
2018/04/18 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
Python读取网页内容的方法
2015/07/30 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python中偏函数用法示例
2018/06/07 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
记者岗位职责
2014/01/06 职场文书
大学生旷课检讨书
2014/01/22 职场文书
品质主管岗位职责
2014/03/16 职场文书
中文专业自荐书
2014/06/29 职场文书
社区助残日活动总结
2014/08/29 职场文书
投诉信格式范文
2015/07/02 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android
如何在Python中妥善使用进度条详解
2022/04/05 Python