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通过poll实现异步IO的方法
Jun 04 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
matplotlib设置legend图例代码示例
Dec 19 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
Django框架安装方法图文详解
Nov 04 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
Python Pandas 删除列操作
Mar 16 Python
python数字图像处理实现图像的形变与缩放
Jun 28 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
JAVASCRIPT 对象的创建与使用
2021/03/09 Javascript
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
JS中的BOM应用
2018/02/02 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
python调用java的Webservice示例
2014/03/10 Python
pandas object格式转float64格式的方法
2018/04/10 Python
PyQt5实现简易计算器
2020/05/30 Python
python tkinter组件摆放方式详解
2019/09/16 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
大专毕业生简历的自我评价
2013/10/20 职场文书
党员干部承诺书范文
2014/03/25 职场文书
入党现实表现材料
2014/12/23 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
python装饰器代码解析
2022/03/23 Python
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript