Python使用paramiko連接遠程服務器執行Shell命令的實現
需求
在自動化測試
場景裡, 有時需要在代碼裡獲取遠程服務器的某些數據, 或執行一些查詢命令,如獲取Linux系統版本號 \ 獲取CPU及內存的占用等, 本章記錄一下使用paramiko模塊SSH連接服務器的方法
1. 先安裝paramiko庫
pip3 install paramiko
2. 代碼
#!/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 paramiko class 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_obj self.ssh_connect_timeout = timeout_s self.port = port self.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_cli def execute_cmd(self, cmd): """ :param cmd: 單個命令 :return: 服務器的輸出信息 """ 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: 服務器的輸出信息的列表 """ out_list = list(map(self.execute_cmd, cmd_list)) return out_list def 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()
到此這篇關於Python使用paramiko連接遠程服務器執行Shell命令的實現的文章就介紹到這瞭,更多相關Python使用paramiko連接遠程服務器執行Shell命令內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 使paramiko庫執行命令時在給定的時間強制退出功能的實現
- python 遠程執行命令的詳細代碼
- python基於paramiko庫遠程執行 SSH 命令,實現 sftp 下載文件
- python paramiko連接ssh實現命令
- 教你怎麼用Python操作MySql數據庫