Python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行Shell命令的實(shí)現(xiàn)
需求
在自動化測試
場景里, 有時需要在代碼里獲取遠(yuǎn)程服務(wù)器的某些數(shù)據(jù), 或執(zhí)行一些查詢命令,如獲取Linux系統(tǒng)版本號 \ 獲取CPU及內(nèi)存的占用等, 本章記錄一下使用paramiko模塊SSH連接服務(wù)器的方法
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: 服務(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_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()
到此這篇關(guān)于Python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行Shell命令的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行Shell命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python facenet進(jìn)行人臉識別測試過程解析
這篇文章主要介紹了Python facenet進(jìn)行人臉識別測試過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08python實(shí)現(xiàn)音樂播放器 python實(shí)現(xiàn)花框音樂盒子
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)音樂播放器,實(shí)現(xiàn)花框音樂盒子,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02Python應(yīng)用實(shí)現(xiàn)雙指數(shù)函數(shù)及擬合代碼實(shí)例
這篇文章主要介紹了Python應(yīng)用實(shí)現(xiàn)雙指數(shù)函數(shù)及擬合代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06如何將python項(xiàng)目部署在一臺服務(wù)器上
服務(wù)器less技術(shù)是一種無需管理服務(wù)器即可運(yùn)行應(yīng)用程序的方法,最流行的服務(wù)器less平臺是AWS Lambda,這篇文章主要介紹了如何將python項(xiàng)目部署在一臺服務(wù)器上,需要的朋友可以參考下2023-10-10python代碼中的縮進(jìn)規(guī)則詳細(xì)解釋(史上最全)
這篇文章主要介紹了代碼縮進(jìn)的重要性以及在Python語言中的具體規(guī)則,代碼縮進(jìn)有助于提高代碼的可讀性和整潔性,并且是Python語言中一個強(qiáng)制性的語法要求,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-01-01python常見進(jìn)制轉(zhuǎn)換方法示例代碼
Python為我們提供了強(qiáng)大的內(nèi)置函數(shù)和格式化數(shù)字的方法去實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換的功能,下面這篇文章主要給大家介紹了關(guān)于python常見進(jìn)制轉(zhuǎn)換方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05Python計(jì)算素?cái)?shù)個數(shù)的兩種方法
本文主要介紹了Python計(jì)算素?cái)?shù)個數(shù)的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05