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 06 Python
Python检测字符串中是否包含某字符集合中的字符
May 21 Python
Python正则表达式常用函数总结
Jun 24 Python
python 删除非空文件夹的实例
Apr 26 Python
python3处理含有中文的url方法
May 10 Python
利用Django模版生成树状结构实例代码
May 19 Python
python实现关闭第三方窗口的方法
Jun 28 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
python中的逆序遍历实例
Dec 25 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
Python Django 后台管理之后台模型属性详解
Apr 25 Python
Python内置的数据类型及使用方法
Apr 13 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的curl实现get和post的代码
2008/08/23 PHP
PHP操作xml代码
2010/06/17 PHP
用PHP实现Ftp用户的在线管理
2012/02/16 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
js中this用法实例详解
2015/05/05 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
Python探索之ModelForm代码详解
2017/10/26 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
2014年3.15团委活动总结
2014/03/16 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
法学专业求职信范文
2015/03/19 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
导游词之杭州西湖
2019/09/19 职场文书
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库