Python-SSH连接工具类
使用Paramiko模块进行SSH连接的工具类
import paramiko
from time import sleepclass SSH_Class:hostIP = '192.168.0.2'TCP_Port = 22userName = 'root'passWord = 'root'keyFilePath = ''keyFilePassword = ''timeOut = 60"""初始化SSH_Class,参数赋初值可缺省"""def __init__(self, hostIP='', TCP_Port=22, userName='', passWord='', keyFilePath='', keyFilePassword='', timeOut=60, commands=[]):self.hostIP = hostIPself.TCP_Port = TCP_Portself.userName = userNameself.passWord = passWordself.keyFilePath = keyFilePathself.keyFilePassword = keyFilePasswordself.timeOut = timeOutself.commands = commandsdef getSshObject(self):"""创建SSH对象,用于SSH连接使用,并返回SSH paramiko对象"""ssh_Object = paramiko.SSHClient()ssh_Object.set_missing_host_key_policy(paramiko.AutoAddPolicy())if ssh_Object:return ssh_Objectelse:self.closeSshObject(ssh_Object)def connectByKey(self):"""通过密钥进行SSH连接方法,返回SSH的连接对象"""if self.keyFilePassword:RSA_Key = paramiko.RSAKey.from_private_key_file(self.keyFilePath,password=self.keyFilePassword)else :RSA_Key = paramiko.RSAKey.from_private_key_file(self.keyFilePath)ssh_Object = self.getSshObject()ssh_Object.connect(hostname=self.hostIP,port=self.TCP_Port,username=self.userName,pkey=RSA_Key,timeout=self.timeOut)if ssh_Object:return ssh_Objectelse:self.closeSshObject(ssh_Object)raise Exception("The SSH Key Connection Failed!")def connectByPassword(self):"""通过密码进行SSH连接方法,返回SSH的连接对象"""ssh_Object = self.getSshObject()ssh_Object.connect(hostname=self.hostIP,port=self.TCP_Port,username=self.userName,password=self.passWord,timeout=self.timeOut)if ssh_Object:return ssh_Objectelse :self.closeSshObject(ssh_Object)raise Exception("The SSH Password Connection Failed!")def closeSshObject(self, ssh_Object):"""关闭SSH连接对象"""if ssh_Object:ssh_Object.close()else:raise Exception("Failed To Close SSH Connection!")def executeSshCommands(self, ssh_Object, My_Commands):"""连接完成后执行命令,使用时具体细节请参照实际连接过程及命令执行过程"""result = ''if My_Commands:command = ssh_Object.invoke_shell()for com in My_Commands:sleep(1)command.send(com)out = command.recv(1024)#print(out.decode())result=result+(out.decode())return resultelse :self.closeSshObject(ssh_Object)raise Exception("No Commands are Executed!") if __name__ == '__main__':"""连接示例"""My_Commands=['\n','\n','ls','\n','\n']#使用hostIP='192.168.0.2'传参可进行缺省参数传参sshClass = SSH_Class(hostIP='192.168.0.2', userName='root', passWord='root')sshObject = sshClass.connectByPassword()res = sshClass.executeSshCommands(sshObject,My_Commands)sshClass.closeSshObject(sshObject)print(res)
Python-SSH连接工具类相关推荐
- Python中自定义类如果重写了__repr__方法为什么会影响到str的输出?
这是因为Python3中,str的输出是调用类的实例方法__str__来输出,如果__str__方法没有重写,则自动继承object类的__str__方法,而object类的__str__方法是调用_ ...
- python如何定义类_Python 面向对象
Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...
- Python中的类、模块和包究竟是什么?
Python培训教程:Python中的类.模块和包究竟是什么?在Python和其他编程语言中,都有类似或相同的概念,如对象.类.模块.包,名称都是一样的,只不过会有细微的一些区别,正是因为有这些存在, ...
- 刻意练习:Python基础 -- Task10. 类与对象
背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...
- Python模块与类
2019独角兽企业重金招聘Python工程师标准>>> 类 类的定义,继承 类中的属性,类属性和实例属性的区别及访问方式 变量名以"_"或"__&quo ...
- Python之面向对象类和对象
Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object):"""类里定义一类事物共同的技能.可以是变量,也可是函数.& ...
- Python ssh连接Linux服务器报Incompatible ssh peer (no acceptable kex algorithm) 解决方法
Python ssh连接Linux服务器报Incompatible ssh peer (no acceptable kex algorithm) 解决方法 参考文章: (1)Python ssh连接L ...
- python里的类与一切事物都是对象
对于python,一切事物都是对象,对象基于类创建 列如 name='csdcs' li=[1,3,43] 上面两个都是对象,因为它们都是python中的 类里面存着许多的功能,功能的集合, ...
- python中定义类
3.2. 定义类 Python是完全面向对象的:可以定义自已的类,从自已的或内置类进行继承,然后对生成的类进行实例化. 在Python中定义类很简单:就象定义函数,没有独立的定义接口.只要定义类,然后 ...
- python中的类属性和类方法_python面向对象之类属性和类方法的使用和实例
类属性和类方法 目标 类的结构类属性和实例属性类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 1. 使用面相对象开发,第 1 步 是设计 类 2. 使用 类名() 创建对象,创建对象 的 ...
最新文章
- 如何在自动驾驶的视觉感知中检测极端情况?
- CPU 深夜狂飙,一帮大佬都傻眼了......
- java数据结构库函数_Java8 内置函数(api)总结
- Spring event 使用完全指南
- 状态码301 302
- linux 高性能服务排查方式
- /etc/services
- 每日一题(6)—— sizeof用法
- qt中关于坐标的说明
- python 论文数据处理_用Python一次性把论文作图与数据处理全部搞定!
- 用vuejs如何实现ajax,vuejs使用FormData实现ajax上传图片文件
- v8引擎编译全记录2020-10-17(保姆级教程)
- 422串口线互连的接法
- 苹果笔记本双系统OS和win10,在win10下罗技M558蓝牙提示输入码无效
- Redmi 智能电视 X 2022 评测
- vue的methods里面的函数使用箭头函数
- sql server 安全配置及建议配置
- 概率论 —— 随机事件与概率
- 硬盘提示初始化是什么意思?数据会丢失吗?
- mt6355功率设计注意事项 [仅为mt6758]