您好,登錄后才能下訂單哦!
這篇文章主要講解了“Python怎么封裝SSHClient.py”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Python怎么封裝SSHClient.py”吧!
1、為了更方便采集信息系統(tǒng)以及數(shù)據(jù)庫(kù)的信息,我做了該組件
2、為了讓語(yǔ)句執(zhí)行更順暢,位置不發(fā)生錯(cuò)亂,暫時(shí)采用time.sleep()的方式解決
#!/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
@desc:
'''
import paramiko
from paramiko.py3compat import u
import time
'''
@attention: : ssh客戶(hù)端使用
@author: 白瑞鈞
@param date:
'''
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: 用戶(hù)名
@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 ssh: 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怎么封裝SSHClient.py”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Python怎么封裝SSHClient.py這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guā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)容。