Python封裝(01):SSHClient.py
自己封裝好的遠端連線的元件,後期會不斷完善
-
為了更方便採集資訊系統以及資料庫的資訊,我做了該元件
-
為了讓語句執行更順暢,位置不發生錯亂,暫時採用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 @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)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2663842/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python——SSHClient.pyPythonclient
- pt-ost python封裝Python封裝
- python怎麼封裝函式Python封裝函式
- python程式碼怎麼封裝Python封裝
- Python 的 Geth 封裝庫 PyGethPython封裝
- python中怎樣封裝與引用Python封裝
- 【封裝那些事】 缺失封裝封裝
- # 095 01 Android 零基礎入門 02 Java物件導向 02 Java封裝 01 封裝的實現 03 # 088 01 Android 零基礎入門 02 Java物件導向 02 Java封裝 03 封裝總結 01 封裝知識點總結AndroidJava物件封裝
- Selenium二次封裝-Python版本封裝Python
- Python_16 配置檔案與封裝Python封裝
- 封裝封裝
- 【封裝小技巧】is 系列方法的封裝封裝
- 【JavaScript框架封裝】公共框架的封裝JavaScript框架封裝
- Sqlite封裝1-基本封裝-SqliteToolSQLite封裝
- Python自動化測試~PO模型封裝Python模型封裝
- Python 封裝日誌模型loggingPython封裝模型
- python 打飛機專案 ( 基類封裝 )Python封裝
- Flutter 封裝:富文字 RichText 極簡封裝Flutter封裝
- Dapper的封裝、二次封裝、官方擴充套件包封裝,以及ADO.NET原生封裝APP封裝套件
- AVPlayer封裝封裝
- ajax 封裝封裝
- 封裝OCX封裝
- 封裝介面封裝
- sqlite封裝SQLite封裝
- java封裝Java封裝
- java 封裝Java封裝
- EventBus封裝封裝
- FMDB封裝封裝
- websocket封裝Web封裝
- 5.1封裝封裝
- 09 #### 封裝封裝
- 使用 Docker 封裝 Python 小工具生成 GitBook PDFDocker封裝PythonGit
- python-對requests請求簡單的封裝Python封裝
- MongoDB Python官方驅動 PyMongo 的簡單封裝MongoDBPython封裝
- 【封裝小技巧】列表處理函式的封裝封裝函式
- Flutter MVP 封裝FlutterMVP封裝
- JavaScript 模組封裝JavaScript封裝
- JS功能封裝JS封裝