Python——SSHClient.py

简介: 自己封装好的远程连接的组件,后期会不断完善 1、为了更方便采集信息系统以及数据库的信息,我做了该组件 2、为了让语句执行更顺畅,位置不发生错乱,暂时采用time.sleep()的方式解决 3、对于第二点会想办法将方法完善,以希望大家多多提出宝贵建议 #!/usr/bin/env ...

自己封装好的远程连接的组件,后期会不断完善

1、为了更方便采集信息系统以及数据库的信息,我做了该组件

2、为了让语句执行更顺畅,位置不发生错乱,暂时采用time.sleep()的方式解决

3、对于第二点会想办法将方法完善,以希望大家多多提出宝贵建议

#!/usr/bin/env python
# coding:utf-8
'''
@author: Ryan Bai(白瑞钧)
@license:
@contact: brj880719@hotmail.com
@file: SSHClient.py
@create time: 2017/11/8 18:11
@attention: ssh客户端使用
@desc:
'''
import paramiko
from paramiko.py3compat import u
import time

class SSHClient(object):

    '''
    @attention: 关闭 ssh 链接
    @author: 白瑞钧
    @param ssh: ssh链接
    '''
    def close(self, ssh):
        ssh.close()


    '''
    @attention: 创建 ssh 链接
    @author: 白瑞钧
    @param v_username: 用户名
    @param v_password: 密码
    @param v_ip: IP
    @param v_port: 端口号
    '''
    def sshConnection(self, v_username, v_password, v_ip, v_port=22):
        # 创建SSH对象
        ssh = paramiko.SSHClient()

        # 把要连接的机器添加到known_hosts文件中
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

        # 连接服务器
        ssh.connect(hostname=v_ip, port=v_port, username=v_username, password=v_password)

        return ssh
    # endregion


    '''
    @attention: 执行单条命令
    @author: 白瑞钧
    @param ssh: ssh链接
    @param v_cmd: 需要执行的命令
    '''
    def sshExecByOne(self, ssh, v_cmd):
        # 执行
        stdin, stdout, stderr = ssh.exec_command(v_cmd)
        result = stdout.read()
        
        if not result:
            result = stderr.read()

        return result.decode()


    '''
    @attention: 执行命令集
    @author: 白瑞钧
    @param s: ssh链接
    @param l_cmd: 需要执行的命令集
    @param exec_wait: 执行命令间隔时间
    @param exit_wait: 退出等待时间
    '''
    def sshExecByMany(self, s, l_cmd, exec_wait, exit_wait):
        ssh = s.invoke_shell()
        # 执行
        for v_cmd in l_cmd:
            ssh.send(v_cmd)
            ssh.send('\n')
            time.sleep(exec_wait)
            if v_cmd=='exit':
                time.sleep(exit_wait)

        result = u(ssh.recv(9999))

        return result


if __name__ == '__main__':

    getClient = SSHClient()
    ssh = getClient.sshConnection('sys_admin', 'XSW@1qaz', '10.82.28.219')
    l_cmd = ['sudo su - ',
             'su - oracle',
            'sqlplus / as sysdba',
            u'select * from dual;',
            'exit',
             'df -h',
             'exit']
    result = getClient.sshExecByMany(ssh, l_cmd, 1, 1)
    print(result)
    getClient.close(ssh)

    # getClient = SSHClient()
    # ssh = getClient.sshConnection('sys_admin', 'XSW@1qaz', '10.82.28.219')
    # result = getClient.sshExecByOne(ssh,'pwd')
    # print(result)
    # getClient.close(ssh)

目录
相关文章
|
8月前
|
安全 网络安全 Python
Python实现ssh远程执行
paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方式。可以实现远程命令执行、文件传输、中间SSH代理等功能,相对于Pexpect,封装的层次更高,更贴近SSH协议的功能 。
|
2月前
|
监控 安全 网络安全
局域网管理监控的远程访问控制:利用SSH和Python实现安全管理
在当今数字化时代,局域网管理监控对于确保网络安全至关重要。远程访问控制是一项关键任务,通过利用SSH(Secure Shell)和Python编程语言,我们可以实现更加安全的管理方法。本文将介绍如何使用这两者结合,为局域网管理提供可靠的远程访问控制。
234 1
|
7月前
|
安全 Linux 网络安全
Python使用Paramiko实现SSH管理
paramiko 是一个用于在Python中实现SSHv2协议的库,它支持对远程服务器进行加密的通信。目前该模块支持所有平台架构且自身遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,你可以在Python中实现SSH客户端和服务器,并进行安全的文件传输和远程命令执行。
81 0
|
9月前
|
Linux Python
[笔记]Win10+VSCode+CentOS7+SSH+远程开发Python
[笔记]Win10+VSCode+CentOS7+SSH+远程开发Python
|
11月前
|
网络协议 网络安全
python-- socket 粘包、实现 ssh
python-- socket 粘包、实现 ssh
|
安全 网络安全 Python
Python建立SSH连接与使用方法
paramiko是一个Python实现的SSH协议库,可以用来建立SSH连接、传输文件等。你可以在Python环境中使用pipan
Python建立SSH连接与使用方法
|
网络安全 API Python
Python 基于Python实现的ssh兼sftp客户端(下)
Python 基于Python实现的ssh兼sftp客户端(下)
86 0
|
机器学习/深度学习 Linux 测试技术
Python 基于Python实现的ssh兼sftp客户端(上)
Python 基于Python实现的ssh兼sftp客户端(上)
189 0
|
Unix Linux 网络安全
简单的Python脚本,实现ssh登录配置路由器
简单的Python脚本,实现ssh登录配置路由器
584 0
简单的Python脚本,实现ssh登录配置路由器
|
测试技术 网络安全 Python
Python 运用Pexpect实现SSH爆破
Pexpect是一个纯Python模块,用于生成子应用程序;控制他们;并对输出中的预期模式作出响应。Pexpect的工作原理类似于Don Libes的Expect。Pexpect允许脚本生成一个子应用程序,并像键入命令一样控制它。Pexpect可用于自动化交互应用程序,如ssh、ftp、passwd、telnet等。它可用于自动化安装脚本,以在不同服务器上复制软件包安装。它可以用于自动化软件测试。
256 0

相关实验场景

更多