python如何利用paramiko執(zhí)行服務(wù)器命令
更新時間:2020年11月07日 15:06:25 作者:JanWong
這篇文章主要介紹了python如何利用paramiko執(zhí)行服務(wù)器命令,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
話不多說直接上代碼
封裝連接
@staticmethod def connect(ip, server_user, server_port, server_path): """ 連接服務(wù)器 :param : :return: """ ssh = paramiko.SSHClient() private_key = paramiko.RSAKey.from_private_key_file('{}.ssh/id_rsa'.format(server_path)) ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: ssh.connect(ip, port=server_port, username=server_user, pkey=private_key, timeout=5, allow_agent=True) return ssh except Exception as e: app.logger.info('connect_error info is {}'.format(e.__repr__())) return { 'result': 1, 'ip': ip, 'msg': e.__repr__(), }
在服務(wù)器執(zhí)行命令
def fabric_run_cmd(self, ip, server_user, server_port, server_path, cmd): """ 批量在服務(wù)器執(zhí)行命令 :return: """ conn = self.connect(ip, server_user, server_port, server_path) try: if type(conn) == dict: return conn else: stdin, stdout, stderr = conn.exec_command(cmd) app.logger.info('fabric_run_cmd_stdout info is {}'.format(stdout.readlines())) app.logger.info('fabric_run_cmd_stderr info is {}'.format(stderr.readlines())) channel = stdout.channel status = channel.recv_exit_status() conn.close() app.logger.info('fabric_run_cmd_status info is {}'.format(status)) if status == 0: return { 'ip': ip, 'msg': '執(zhí)行成功', 'result': 0 } else: return { 'ip': ip, 'msg': stderr.readlines(), 'result': 1 } except Exception as e: app.logger.info('fabric_run_cmd_error info is {}'.format(e.__repr__())) return { 'ip': ip, 'msg': e.__repr__(), 'result': 1 }
將文件發(fā)送到服務(wù)器
def fabric_put_file(self, ip, src_file, dst_file, server_user, server_port, server_path): """ 發(fā)送文件到服務(wù)器 :return: """ conn = self.connect(ip, server_user, server_port, server_path) if type(conn) == dict: return conn else: try: ftp = conn.open_sftp() ftp.put(dst_file, src_file) # 發(fā)送文件之前先判斷有沒有目標(biāo)文件夾 如果沒有現(xiàn)在服務(wù)器上創(chuàng)建文件夾 ftp.close() # 在此判斷文件是否發(fā)送成功 return { 'ip': ip, 'msg': '上傳成功', 'result': 0 } except Exception as e: app.logger.info('fabric_put_file_error info is {}'.format(e.__repr__())) return { 'ip': ip, 'msg': e.__repr__(), 'result': 1 }
能力有限,如有不妥請留言指正
以上就是python如何利用paramiko執(zhí)行服務(wù)器命令的詳細(xì)內(nèi)容,更多關(guān)于python 執(zhí)行服務(wù)器命令的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
一文詳解Python中Reduce函數(shù)輕松解決復(fù)雜數(shù)據(jù)聚合
這篇文章主要為大家介紹了Python中Reduce函數(shù)輕松解決復(fù)雜數(shù)據(jù)聚合示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08使用 python pyautogui實現(xiàn)鼠標(biāo)鍵盤控制功能
pyautogui是一個可以控制鼠標(biāo)和鍵盤的python庫,類似的還有pywin32。這篇文章主要介紹了python中的pyautogui實現(xiàn)鼠標(biāo)鍵盤控制功能,需要的朋友可以參考下2019-08-08用Python實現(xiàn)童年貪吃蛇小游戲功能的實例代碼
這篇文章主要介紹了用Python實現(xiàn)童年貪吃蛇小游戲功能的實例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Python與Appium實現(xiàn)手機APP自動化測試的示例代碼
本文主要介紹了Python與Appium實現(xiàn)手機APP自動化測試的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02