使用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连接工具类相关推荐

  1. Python中自定义类如果重写了__repr__方法为什么会影响到str的输出?

    这是因为Python3中,str的输出是调用类的实例方法__str__来输出,如果__str__方法没有重写,则自动继承object类的__str__方法,而object类的__str__方法是调用_ ...

  2. python如何定义类_Python 面向对象

    Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...

  3. Python中的类、模块和包究竟是什么?

    Python培训教程:Python中的类.模块和包究竟是什么?在Python和其他编程语言中,都有类似或相同的概念,如对象.类.模块.包,名称都是一样的,只不过会有细微的一些区别,正是因为有这些存在, ...

  4. 刻意练习:Python基础 -- Task10. 类与对象

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  5. Python模块与类

    2019独角兽企业重金招聘Python工程师标准>>> 类 类的定义,继承 类中的属性,类属性和实例属性的区别及访问方式 变量名以"_"或"__&quo ...

  6. Python之面向对象类和对象

    Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object):"""类里定义一类事物共同的技能.可以是变量,也可是函数.& ...

  7. Python ssh连接Linux服务器报Incompatible ssh peer (no acceptable kex algorithm) 解决方法

    Python ssh连接Linux服务器报Incompatible ssh peer (no acceptable kex algorithm) 解决方法 参考文章: (1)Python ssh连接L ...

  8. python里的类与一切事物都是对象

    对于python,一切事物都是对象,对象基于类创建 列如 name='csdcs' li=[1,3,43] 上面两个都是对象,因为它们都是python中的 类里面存着许多的功能,功能的集合,     ...

  9. python中定义类

    3.2. 定义类 Python是完全面向对象的:可以定义自已的类,从自已的或内置类进行继承,然后对生成的类进行实例化. 在Python中定义类很简单:就象定义函数,没有独立的定义接口.只要定义类,然后 ...

  10. python中的类属性和类方法_python面向对象之类属性和类方法的使用和实例

    类属性和类方法 目标 类的结构类属性和实例属性类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 1. 使用面相对象开发,第 1 步 是设计 类 2. 使用 类名() 创建对象,创建对象 的 ...

最新文章

  1. 如何在自动驾驶的视觉感知中检测极端情况?
  2. CPU 深夜狂飙,一帮大佬都傻眼了......
  3. java数据结构库函数_Java8 内置函数(api)总结
  4. Spring event 使用完全指南
  5. 状态码301 302
  6. linux 高性能服务排查方式
  7. /etc/services
  8. 每日一题(6)—— sizeof用法
  9. qt中关于坐标的说明
  10. python 论文数据处理_用Python一次性把论文作图与数据处理全部搞定!
  11. 用vuejs如何实现ajax,vuejs使用FormData实现ajax上传图片文件
  12. v8引擎编译全记录2020-10-17(保姆级教程)
  13. 422串口线互连的接法
  14. 苹果笔记本双系统OS和win10,在win10下罗技M558蓝牙提示输入码无效
  15. Redmi 智能电视 X 2022 评测
  16. vue的methods里面的函数使用箭头函数
  17. sql server 安全配置及建议配置
  18. 概率论 —— 随机事件与概率
  19. 硬盘提示初始化是什么意思?数据会丢失吗?
  20. mt6355功率设计注意事项 [仅为mt6758]

热门文章

  1. html ul代表什么意思,ul在HTML中是什么意思
  2. 【Python】Benewake(北醒) TF-LC02(TTL)基于Python运用说明
  3. 解决vue中使用swiper插件——李帅醒博客
  4. 安装WIN10+Ubuntu
  5. ACRCOCAD盘凸轮DMIS程序
  6. 把电脑上的文件通过数据线传入到android系统
  7. 企微魔盒独立版v15.1
  8. file input 点击没反应_点击添加附件没反应
  9. 快递配送管理系统毕业设计
  10. Windows自动关机设置——利用cmd控制台