Python使用paramiko连接远程服务器执行Shell命令的实现
需求
在自动化测试场景里,有时需要在代码里获取远程服务器的某些数据,或执行一些查询命令,如获取Linux系统版本号\获取CPU及内存的占用等,本章记录一下使用paramiko模块SSH连接服务器的方法
1.先安装paramiko库
pip3installparamiko
2.代码
#!/usr/bin/envpython
#coding=utf-8
"""
#:author:TerryLi
#:url:https://blog.csdn.net/qq_42183962
#:copyright:©2020-presentTerryLi
#:motto:IbelievethattheGodrewardsthediligent.
"""
importparamiko
classcfg:
host="192.168.2.2"
user="root"
password="123456"
classsshChannel:
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()
defconnect_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)
exceptparamiko.ssh_exception.SSHException:
print("连接{}失败,请检查配置或重试".format(self._cfg.host))
ssh_cli.close()
returnssh_cli
defexecute_cmd(self,cmd):
"""
:paramcmd:单个命令
:return:服务器的输出信息
"""
stdin,stdout,stderr=self.ssh.exec_command(cmd)
self.ssh.close()
returnstdout.read().decode('utf-8')
defexecute_cmd_list(self,cmd_list):
"""
:paramcmd:命令列表
:return:服务器的输出信息的列表
"""
out_list=list(map(self.execute_cmd,cmd_list))
returnout_list
deftest_get_sys_version(self):
sys_version=self.execute_cmd("lsb_release-rd")
print(sys_version)
deftest_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命令内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。