# -*- coding: UTF-8 -*-
import paramiko
import time ##################################################################
'''类名称: SSHCommunication
描述:SSH通讯类
作者:Sid Zhang(autopenguin)'''
##################################################################
class SSHCommunication():
def __init__(self):
self.client = paramiko.SSHClient()
##################################################################
'''方法名称: Logon
参数:HostIP->登录主机IP【字符串】
SSHPort->SSH登录端口号【数字】
Username->登录用户名【字符串】
Password->登录密码【字符串】
返回值:None
描述:SSH登录方法'''
##################################################################
def Logon(self, HostIP, SSHPort, Username, Password):
self.client.set_missing_host_key_policy(paramiko.MissingHostKeyPolicy())
self.client.connect(HostIP, SSHPort, Username, Password)
self.chan = self.client.invoke_shell()
self.chan.settimeout(120)
##################################################################
'''函数名称: Send
参数:Cmds->待发送的命令列表【字符串列表】
返回值:None
描述:发送命令方法'''
##################################################################
def Send(self, Cmds = []):
for Cmd in Cmds:
while not self.chan.send_ready():
time.sleep(0.1)
self.chan.send(Cmd + '\n')
print 'Execute Command: ' + Cmd
##################################################################
'''函数名称: SendWithoutReceive
参数:Cmds->待发送的命令列表【字符串列表】
返回值:None
描述:发送命令且无须接收结果方法'''
#################################################################
def SendWithoutReceive(self, Cmds=[]):
self.Send(Cmds)
self.Receive()
##################################################################
'''函数名称: Receive
参数:None
返回值:命令执行输出
描述:接收命令输出方法'''
##################################################################
def Receive(self):
while not self.chan.recv_ready():
time.sleep(0.1) 。
CommandOut = self.chan.recv(1024000)
CommandOutAll = CommandOut
while not (CommandOut.endswith('\x1b[m\x0f') or CommandOut.endswith('> ') or CommandOut.endswith('$') or CommandOut.endswith('# ')):
while not self.chan.recv_ready():
time.sleep(0.1)
CommandOut = self.chan.recv(102400)
CommandOutAll = CommandOutAll + CommandOut
return CommandOutAll
##################################################################
'''函数名称: Logout
参数:None
返回值:None
描述:SSH登出方法'''
##################################################################
def Logout(self):
self.chan.close()

基于 Paramiko 的 SSH 通讯类的更多相关文章

  1. Android基于XMPP的即时通讯2-文件传输

    本文是在上一篇博文Android基于XMPP的即时通讯1-基本对话的基础上,添加新的功能,文件传输 1.初始化文件传输管理类 public static FileTransferManager get ...

  2. 批量远程执行linux服务器程序--基于paramiko(多线程版)

    批量远程执行linux服务器程序--基于paramiko paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接 具体安装方法这里不写,网 ...

  3. 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...

  4. Python的paramiko模块ssh操作

    SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import paramiko    # 创建 ...

  5. Java之基于Eclipse搭建SSH框架(下)

    在上篇博客里,我简介了Tomcat滴配置与Struts2滴搭建,假设对这个还不会滴童鞋去看一下我滴上篇博客<Java之基于Eclipse搭建SSH框架(上)>.今天我们接着上篇博客滴内容. ...

  6. 第二部分用户交互程序开发,通过paramiko记录ssh会话记录

    需求及任务:实现一个给用户登录的界面(通过ssh登到堡垒机上,然后给它展现一个命令行的页面,然后他选择登哪台机器,一选择就连上去且把日志也记录下来). 先在admin创建几条组数据并与用户关联如下图: ...

  7. .Net开发笔记(十五) 基于“泵”的TCP通讯(接上篇)

    上一篇博客中说了基于“泵”的UDP通讯,附上了一个Demo,模拟飞鸽传书的功能,功能不太完善,主要是为了说明“泵”在编程中的应用.本篇文章我再附上一个关于TCP通讯的两个Demo,也都采用了“泵”模式 ...

  8. [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏

    前言  这款安卓小游戏是基于SurfaceView的飞行射击类游戏,采用Java来写,没有采用游戏引擎,注释详细,条理比较清晰,适合初学者了解游戏状态转化自动机和一些继承与封装的技巧. 效果展示    ...

  9. Android基于XMPP的即时通讯3-表情发送

    这篇博文主要讲表情发送的一些东西. 参考:Android基于XMPP的即时通讯1-基本对话 1.准备好资源文件 采用的是emoji的表情,我打包好了,下载地址:http://files.cnblogs ...

随机推荐

  1. createElement 创建DOM元素

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  2. Lambda表达式【转】

    lambda表达式是对匿名方法的一种改进,具有更加简洁的语法和更易理解的形式,lambda表达式可以包括表达式和语句,并且可以用与创建委托或表达式目录树类型. lambda表达式都使用Lambda运算 ...

  3. [swustoj 1023] Escape

    Escape     Description BH is in a maze,the maze is a matrix,he wants to escape! Input The input cons ...

  4. 用NSData和NSFileManager保存内存中的对象

    曾经接触过iOS开发,并且开发过两个应用,纵然青涩,也算是一断美好的回忆.转眼就已经一年多了!现在回过头来决定再次拿起iOS开发. 下面讲NSData: NSdata的概念 1.使用文件时需要频繁地将 ...

  5. Java基础——异常处理

    异常的层次结构 所有的异常类都是 java.lang.Exception 类的子类型.异常类都是 Throwable 类的子类.除了异常类 Error 类也是由 Throwable 类产生的的子类1. ...

  6. 解释一下,在你往浏览器中输入一个URL后都发生了什么,要尽可能详细

    这道题目没有所谓的完全的正确答案,这个题目可以让你在任意的一个点深入下去, 只要你对这个点是熟悉的.以下是一个大概流程: 浏览器向DNS服务器查找输入URL对应的IP地址. DNS服务器返回网站的IP ...

  7. java AES加密算法

    package com.siro.tools; import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import j ...

  8. Android 获取本机WIFI及3G网络IP

    获取本机WIFIprivate String getLocalIpAddress() { WifiManager wifiManager = (WifiManager) getSystemServic ...

  9. TextView字体和背景图片 设置透明度

    背景图片透明度设置  viewHolder.relative_layout.getBackground().setAlpha(225);     0  ---  225 ((TextView)tv). ...

  10. Jemeter对Oracle数据库性能测试方法

    下载Oracle的jdbc数据库驱动包,注意Oracle数据库的版本,这里使用的是:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 ...