国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Python > 正文

python3模擬實現xshell遠程執行liunx命令的方法

2024-09-09 19:02:20
字體:
來源:轉載
供稿:網友

依賴包:pip install paramiko

源碼demo:

from time import *import paramiko# 定義一個類,表示一臺遠端linux主機class Linux(object):  # 通過IP, 用戶名,密碼,超時時間初始化一個遠程Linux主機  def __init__(self, ip, username, password, timeout=30):    self.ip = ip    self.username = username    self.password = password    self.timeout = timeout    # transport和chanel    self.t = ''    self.chan = ''    # 鏈接失敗的重試次數    self.try_times = 3   # 調用該方法連接遠程主機  def connect(self):    while True:      # 連接過程中可能會拋出異常,比如網絡不通、鏈接超時      try:        self.t = paramiko.Transport(sock=(self.ip, 22))        self.t.connect(username=self.username, password=self.password)        self.chan = self.t.open_session()        self.chan.settimeout(self.timeout)        self.chan.get_pty()        self.chan.invoke_shell()        # 如果沒有拋出異常說明連接成功,直接返回        print('連接%s成功' % self.ip)        # 接收到的網絡數據解碼為str        print(self.chan.recv(65535).decode('utf-8'))        return      # 這里不對可能的異常如socket.error, socket.timeout細化,直接一網打盡      except Exception as e1:        if self.try_times != 0:          print('連接%s失敗,進行重試' % self.ip)          self.try_times -= 1        else:          print('重試3次失敗,結束程序')          exit(1)   # 斷開連接  def close(self):    self.chan.close()    self.t.close()   # 發送要執行的命令  def send(self, cmd):    cmd += '/r'    result = ''    # 發送要執行的命令    self.chan.send(cmd)    # 回顯很長的命令可能執行較久,通過循環分批次取回回顯,執行成功返回true,失敗返回false    while True:      sleep(0.5)      ret = self.chan.recv(65535)      ret = ret.decode('utf-8')      result += ret      return result  '''  發送文件  @:param upload_files上傳文件路徑 例如:/tmp/test.py  @:param upload_path 上傳到目標路徑 例如:/tmp/test_new.py  '''  def upload_file(self,upload_files,upload_path):    try:      tran=paramiko.Transport(sock=(self.ip, self.port))      tran.connect(username=self.username, password=self.password)      sftp = paramiko.SFTPClient.from_transport(tran)      result=sftp.put(upload_files, upload_path)      return True if result else False    except Exception as ex:      print(ex)      tran.close()    finally:      tran.close()  # 連接正常的情況if __name__ == '__main__':  host = Linux('192.168.16.57', 'root', '+B*A15*EFpKG') # 傳入Ip,用戶名,密碼  host.connect()  # result = host.send('ls') # 發送一個查看ip的命令  def input_cmd(str):    return input(str)  tishi_msg="輸入命令:"  while True:    msg=input(tishi_msg)    if msg=="exit":      host.close()      break    else:      res=host.send(msg)      data=res.replace(res.split("/n")[-1],"")      tishi_msg=res.split("/n")[-1]      print(res.split("/n")[-1] + data.strip("/n"))

運行代碼測試效果圖:

以上這篇python3模擬實現xshell遠程執行liunx命令的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網之家。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万宁市| 阳江市| 岑溪市| 宾阳县| 阿坝县| 玉溪市| 甘洛县| 秦皇岛市| 西乌珠穆沁旗| 新津县| 闽清县| 西安市| 韩城市| 和平县| 沁水县| 阳泉市| 宝兴县| 蒙自县| 琼海市| 农安县| 吉木乃县| 浦北县| 丹寨县| 饶河县| 儋州市| 天全县| 资源县| 贵阳市| 荆州市| 南江县| 安阳市| 阜城县| 惠安县| 靖边县| 泗洪县| 永年县| 德化县| 勃利县| 鸡东县| 宁蒗| 乌审旗|