Python——SSHClient.py
自己封裝好的遠端連線的元件,後期會不斷完善
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
-
@desc:
-
'''
-
import paramiko
-
from paramiko.py3compat import u
-
import time
-
-
'''
-
@attention: : ssh客戶端使用
-
@author: 白瑞鈞
-
@param date:
-
'''
-
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 ssh: 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)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24851054/viewspace-2147009/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python封裝(01):SSHClient.pyPython封裝client
- 【python】python安裝Python
- 【Python】Python使用redisPythonRedis
- Python 之父談 PythonPython
- 【Python】python練習Python
- 【Python】python 日期操作Python
- python ----python的安裝Python
- python:python的多程式Python
- 【Python】Python連線mysqlPythonMySql
- Python 3 能振興 PythonPython
- 【Python】Python安裝模組Python
- 【python】python APScheduler 框架Python框架
- python學習之初識pythonPython
- Python 序列化(Python IO)Python
- Python合集之Python函式Python函式
- 【Python】python類的繼承Python繼承
- 小白自學Python(一) -- Python教程Python
- 為Python加速 - python+memcachedPython
- Python 3 正在毀滅 PythonPython
- Python補充06 Python之道Python
- [python]python錯誤集錦Python
- Python list of class attributes - PythonPython
- 【python】Python 3 的新特性Python
- python--- 之The program 'python' can be found in the following packages: * python-minimal * python3PythonPackage
- python _Python
- PythonPython
- Python IDLE和Python的區別!Python入門教程Python
- Python補充02 Python小技巧Python
- Python 字串格式化(Python IO)Python字串格式化
- Python 檔案讀寫(Python IO)Python
- Python之將Python字串生成PDFPython字串
- python教程(一)·python環境搭建Python
- 小白自學Python(五)Python運算子Python
- 小白自學Python(六)Python字串(上)Python字串
- [python] Python型別提示總結Python型別
- 與 Python 之父聊天:更快的 Python!Python
- 『python入門:』 python的介紹Python
- python(python中的super函式、)Python函式