溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python怎么封裝遠(yuǎn)程連接的組件

發(fā)布時(shí)間:2021-11-20 09:22:31 來(lái)源:億速云 閱讀:310 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容介紹了“Python怎么封裝遠(yuǎn)程連接的組件”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

#!/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: 關(guān)閉 ssh 鏈接
    @author: 白瑞鈞
    @param ssh: ssh鏈接
    '''
    def close(self, ssh):
        ssh.close()
    '''
    @attention: 創(chuàng)建 ssh 鏈接
    @author: 白瑞鈞
    @param v_username: 用戶名
    @param v_password: 密碼
    @param v_ip: IP
    @param v_port: 端口號(hào)
    '''
    def sshConnection(self, v_username, v_password, v_ip, v_port=22):
        # 創(chuàng)建SSH對(duì)象
        ssh = paramiko.SSHClient()
        # 把要連接的機(jī)器添加到known_hosts文件中
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        # 連接服務(wù)器
        ssh.connect(hostname=v_ip, port=v_port, username=v_username, password=v_password)
        return ssh
    # endregion
    '''
    @attention: 執(zhí)行單條命令
    @author: 白瑞鈞
    @param ssh: ssh鏈接
    @param v_cmd: 需要執(zhí)行的命令
    '''
    def sshExecByOne(self, ssh, v_cmd):
        # 執(zhí)行
        stdin, stdout, stderr = ssh.exec_command(v_cmd)
        result = stdout.read()
        
        if not result:
            result = stderr.read()
        return result.decode()
    '''
    @attention: 執(zhí)行命令集
    @author: 白瑞鈞
    @param s: ssh鏈接
    @param l_cmd: 需要執(zhí)行的命令集
    @param exec_wait: 執(zhí)行命令間隔時(shí)間
    @param exit_wait: 退出等待時(shí)間
    '''
    def sshExecByMany(self, s, l_cmd, exec_wait, exit_wait):
        ssh = s.invoke_shell()
        # 執(zhí)行
        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怎么封裝遠(yuǎn)程連接的組件”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI