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实现将Excel转换为json的方法示例
Aug 05 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
python多个模块py文件的数据共享实例
Jan 11 Python
Python使用字典实现的简单记事本功能示例
Aug 15 Python
python 统计文件中的字符串数目示例
Dec 24 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
Python输出指定字符串的方法
Feb 06 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
如何基于windows实现python定时爬虫
May 01 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
python 利用Pyinstaller打包Web项目
Oct 23 Python
利用Python发送邮件或发带附件的邮件
Nov 12 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中使用正则表达式进行查找替换
2013/06/13 PHP
2014过年倒计时示例
2014/01/31 PHP
Laravel 5框架学习之子视图和表单复用
2015/04/09 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
深入讲解Python编程中的字符串
2015/10/14 Python
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
django模板语法学习之include示例详解
2017/12/17 Python
pymysql 开启调试模式的实现
2019/09/24 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
出国导师推荐信
2014/01/16 职场文书
中国入世承诺
2014/04/01 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
动物科学专业求职信
2014/07/27 职场文书
信仰心得体会
2014/09/05 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书