python如何利用paramiko執(zhí)行服務器命令
更新時間:2020年11月07日 15:06:25 作者:JanWong
這篇文章主要介紹了python如何利用paramiko執(zhí)行服務器命令,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
話不多說直接上代碼
封裝連接
@staticmethod
def connect(ip, server_user, server_port, server_path):
"""
連接服務器
: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__(),
}
在服務器執(zhí)行命令
def fabric_run_cmd(self, ip, server_user, server_port, server_path, cmd):
"""
批量在服務器執(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ā)送到服務器
def fabric_put_file(self, ip, src_file, dst_file, server_user, server_port, server_path):
"""
發(fā)送文件到服務器
: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ā)送文件之前先判斷有沒有目標文件夾 如果沒有現(xiàn)在服務器上創(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í)行服務器命令的詳細內(nèi)容,更多關于python 執(zhí)行服務器命令的資料請關注腳本之家其它相關文章!
相關文章
一文詳解Python中Reduce函數(shù)輕松解決復雜數(shù)據(jù)聚合
這篇文章主要為大家介紹了Python中Reduce函數(shù)輕松解決復雜數(shù)據(jù)聚合示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
使用 python pyautogui實現(xiàn)鼠標鍵盤控制功能
pyautogui是一個可以控制鼠標和鍵盤的python庫,類似的還有pywin32。這篇文章主要介紹了python中的pyautogui實現(xiàn)鼠標鍵盤控制功能,需要的朋友可以參考下2019-08-08
用Python實現(xiàn)童年貪吃蛇小游戲功能的實例代碼
這篇文章主要介紹了用Python實現(xiàn)童年貪吃蛇小游戲功能的實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
Python與Appium實現(xiàn)手機APP自動化測試的示例代碼
本文主要介紹了Python與Appium實現(xiàn)手機APP自動化測試的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02

