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 25 Python
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
Python3连接SQLServer、Oracle、MySql的方法
Jun 28 Python
对python中Json与object转化的方法详解
Dec 31 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 Python
tensorflow实现残差网络方式(mnist数据集)
May 26 Python
python3读取autocad图形文件.py实例
Jun 05 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
PHP中动态显示签名和ip原理
2007/03/28 PHP
让PHP支持页面回退的两种方法
2008/01/10 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
php编写简单的文章发布程序
2015/06/18 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
PHP错误处理函数
2016/04/03 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
python 默认参数问题的陷阱
2016/02/29 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
python tkinter组件使用详解
2019/09/16 Python
Python 如何批量更新已安装的库
2020/05/26 Python
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
盛大二次面试题
2016/11/18 面试题
提高EJB性能都有哪些技巧
2012/03/25 面试题
公共事业管理本科生求职信
2013/10/07 职场文书
法人授权委托书范本
2014/04/04 职场文书
推荐信格式范文
2014/05/09 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
结婚十年感言
2015/07/31 职场文书
公司行政管理制度范本
2015/08/05 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery