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中使用ConfigParser解析ini配置文件实例
Aug 30 Python
跟老齐学Python之使用Python操作数据库(1)
Nov 25 Python
python同时给两个收件人发送邮件的方法
Apr 30 Python
Python实现计算最小编辑距离
Mar 17 Python
神经网络python源码分享
Dec 15 Python
flask框架中勾子函数的使用详解
Aug 01 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
python KNN算法实现鸢尾花数据集分类
Oct 24 Python
Python加密模块的hashlib,hmac模块使用解析
Jan 02 Python
MoviePy简介及Python视频剪辑自动化
Dec 18 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
总结三种用 Python 作为小程序后端的方式
May 02 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
PHP反射基础知识回顾
2020/09/10 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
JS判断当前页面是否在微信浏览器打开的方法
2015/12/08 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
基于Python的PIL库学习详解
2019/05/10 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
python名片管理系统开发
2020/06/18 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
波兰家居和花园家具专家:4Home
2019/05/26 全球购物
Oracle的内存结构(Memory structures)
2015/06/10 面试题
公共事业管理本科生求职信
2013/10/07 职场文书
测绘工程个人的自我评价
2013/11/10 职场文书
暑期实习鉴定
2013/12/16 职场文书
小学开学典礼主持词
2014/03/19 职场文书
会计求职自荐信
2014/06/20 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
刑事辩护词范文
2015/05/21 职场文书
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python