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语言中的按位运算符
Nov 26 Python
Python进程通信之匿名管道实例讲解
Apr 11 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
Python类的继承和多态代码详解
Dec 27 Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
python 循环读取txt文档 并转换成csv的方法
Oct 26 Python
python+opencv实现阈值分割
Dec 26 Python
Python动态声明变量赋值代码实例
Dec 30 Python
python的Jenkins接口调用方式
May 12 Python
Python 如何对文件目录操作
Jul 10 Python
python中操作文件的模块的方法总结
Feb 04 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/03/15 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
一个可以显示阴历的JS代码
2007/03/05 Javascript
htm调用JS代码
2007/03/15 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
JS简单实现数组去重的方法示例
2017/03/27 Javascript
Node.js简单入门前传
2017/08/21 Javascript
vue debug 二种方法
2018/09/16 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
德购商城:德国进口直邮商城
2017/06/13 全球购物
医学类导师推荐信范文
2013/11/19 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
庆祝国庆节标语
2014/10/09 职场文书
人民的好儿女观后感
2015/06/18 职场文书
中秋晚会致辞
2015/07/31 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
pytorch 中nn.Dropout的使用说明
2021/05/20 Python
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技