温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python怎么封装远程连接的组件

发布时间:2021-11-20 09:22:31 来源:亿速云 阅读:340 作者:iii 栏目:编程语言

本篇内容介绍了“Python怎么封装远程连接的组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

#!/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)

“Python怎么封装远程连接的组件”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI