博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python——SSHClient.py
阅读量:6406 次
发布时间:2019-06-23

本文共 2427 字,大约阅读时间需要 8 分钟。

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

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 paramikofrom paramiko.py3compat import uimport timeclass 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 resultif __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)

转载地址:http://xpfea.baihongyu.com/

你可能感兴趣的文章
PSR-2:编码风格指导
查看>>
jquery跟随屏幕滚动代码
查看>>
Jquery的$命名冲突
查看>>
UITextField用法
查看>>
数据库软件架构设计些什么
查看>>
播布客老顽童MySQL DBA培训目录
查看>>
pgbouncer安装配置过程
查看>>
Redis主从切换,官方说明(中文翻译)
查看>>
win7删除SVN脚本
查看>>
我的友情链接
查看>>
Android 一个改善的okHttp封装库
查看>>
【超清视频】CCNA系列课程之三:交换机工作原理及VLAN创建
查看>>
php mysql数据库导出sql文件
查看>>
Nginx的Upstream负载均衡模块
查看>>
linux下防DDOS工具
查看>>
数据结构与算法入门1-线性表的顺序存储
查看>>
我的友情链接
查看>>
字符串替换空格
查看>>
我的友情链接
查看>>
jfinal 3.1 使用maven 导入sqljdbc4 jar包问题
查看>>