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中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
Python函数中的函数(闭包)用法实例
Mar 15 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
python实现最速下降法
Mar 24 Python
python中def是做什么的
Jun 10 Python
pytorch实现查看当前学习率
Jun 24 Python
python实现代码审查自动回复消息
Feb 01 Python
python基于OpenCV模板匹配识别图片中的数字
Mar 31 Python
对Keras自带Loss Function的深入研究
May 25 Python
python数据分析之单因素分析线性拟合及地理编码
Jun 25 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 网上商城促销设计实例代码
2012/02/17 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
2016/05/18 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
Python协程的用法和例子详解
2017/09/09 Python
flask中使用蓝图将路由分开写在不同文件实例解析
2018/01/19 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
Python之列表的插入&替换修改方法
2018/06/28 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
驾驶员岗位职责
2014/01/29 职场文书
经典公益广告词
2014/03/13 职场文书
奥利奥广告词
2014/03/20 职场文书
《故乡》教学反思
2014/04/10 职场文书
护士求职自荐信
2015/03/25 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
入党申请书怎么写?
2019/06/11 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL