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实现的批量下载RFC文档
Mar 10 Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
定制FileField中的上传文件名称实例
Aug 23 Python
python lxml中etree的简单应用
May 10 Python
Python+OpenCV实现实时眼动追踪的示例代码
Nov 11 Python
Scrapy框架基本命令与settings.py设置
Feb 06 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
Feb 25 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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
BBS(php & mysql)完整版(四)
2006/10/09 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
微信小程序 页面跳转传值实现代码
2017/07/27 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
python算法学习之计数排序实例
2013/12/18 Python
python实现排序算法
2014/02/14 Python
Python中使用动态变量名的方法
2014/05/06 Python
python设置检查点简单实现代码
2014/07/01 Python
python获取图片颜色信息的方法
2015/03/18 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
销售内勤岗位职责
2014/04/15 职场文书
七年级地理教学计划
2015/01/22 职场文书
冰峪沟导游词
2015/02/09 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书