Python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行Shell命令的實(shí)現(xiàn)
在自動化測試場景里, 有時(shí)需要在代碼里獲取遠(yuǎn)程服務(wù)器的某些數(shù)據(jù), 或執(zhí)行一些查詢命令,如獲取Linux系統(tǒng)版本號 獲取CPU及內(nèi)存的占用等, 本章記錄一下使用paramiko模塊SSH連接服務(wù)器的方法
1. 先安裝paramiko庫pip3 install paramiko2. 代碼
#!/usr/bin/env python# coding=utf-8'''# :author: Terry Li# :url: https://blog.csdn.net/qq_42183962# :copyright: © 2020-present Terry Li# :motto: I believe that the God rewards the diligent.'''import paramikoclass cfg:host = '192.168.2.2'user = 'root'password = '123456'class sshChannel:def __init__(self, cfg_obj, timeout_s=5, port=22):self._cfg = cfg_objself.ssh_connect_timeout = timeout_sself.port = portself.ssh = self.connect_server()def connect_server(self):ssh_cli = paramiko.SSHClient()key = paramiko.AutoAddPolicy()ssh_cli.set_missing_host_key_policy(key)try:ssh_cli.connect(self._cfg.host, port=self.port, username=self._cfg.user, password=self._cfg.password,timeout=self.ssh_connect_timeout)except paramiko.ssh_exception.SSHException:print('連接{}失敗, 請檢查配置或重試'.format(self._cfg.host))ssh_cli.close()return ssh_clidef execute_cmd(self, cmd):''':param cmd: 單個(gè)命令:return: 服務(wù)器的輸出信息'''stdin, stdout, stderr = self.ssh.exec_command(cmd)self.ssh.close()return stdout.read().decode(’utf-8’)def execute_cmd_list(self, cmd_list):''':param cmd: 命令列表:return: 服務(wù)器的輸出信息的列表'''out_list = list(map(self.execute_cmd, cmd_list))return out_listdef test_get_sys_version(self):sys_version = self.execute_cmd('lsb_release -rd')print(sys_version)def test_get_sys_disk_free_and_memory_free(self):sys_info = self.execute_cmd_list(['df -h -BG /', 'free -m'])print(sys_info)if __name__ == ’__main__’:server = sshChannel(cfg)server.test_get_sys_version()server.test_get_sys_disk_free_and_memory_free()
到此這篇關(guān)于Python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行Shell命令的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行Shell命令內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. PHP與已存在的Java應(yīng)用程序集成2. JS繪圖Flot如何實(shí)現(xiàn)動態(tài)可刷新曲線圖3. CSS自定義滾動條樣式案例詳解4. 使用ProcessBuilder調(diào)用外部命令,并返回大量結(jié)果5. 詳解CSS不定寬溢出文本適配滾動6. 使用css實(shí)現(xiàn)全兼容tooltip提示框7. python中if嵌套命令實(shí)例講解8. IDEA項(xiàng)目的依賴(pom.xml文件)導(dǎo)入問題及解決9. Java之JSP教程九大內(nèi)置對象詳解(中篇)10. Python實(shí)現(xiàn)查找數(shù)據(jù)庫最接近的數(shù)據(jù)
