python遠端操作linux伺服器
阿新 • • 發佈:2020-07-27
首先安裝模組:pip install paramiko
參考官方文件用法:http://docs.paramiko.org/en/2.0/api/client.html
獲取linux伺服器的ip,程式碼如下:
import paramiko import re class GetLinuxIp(): '''獲取linux伺服器ip''' def __init__(self, hostname, port, username, password, cmds): ''' :param hostname: linux主機的ip :param port: linux主機的埠 :param username: linux主機登入使用者名稱 :param password: linux主機登入密碼 :param cmds: 需要執行的linux命令''' self.ip = hostname self.port = port self.user = username self.password = password self.cmds = cmds try: self.client = paramiko.SSHClient() # 例項化客戶端 # 儲存伺服器的主機名和金鑰資訊 self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 連線服務端,進行身份驗證 self.client.connect(self.ip, self.port, self.user, self.password, timeout=10) print("連線成功...") except Exception as e: # raise e print("連線失敗,錯誤是{}".format(e)) raise e def excute_command(self): '''執行命令''' #todo stdin是標準輸入檔案,stdout是標準輸出檔案,stderr標準出錯檔案,應用在輸出的重新定位上。 self.stdin, self.stdout, self.stderr = self.client.exec_command(self.cmds) def get_result(self): '''獲取結果''' result = self.stdout.read().decode() pattern = re.compile(r'((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}') self.ip = pattern.search(result).group() print("獲取到linux伺服器的ip是:{}".format(self.ip)) def __del__(self): '''關閉連線''' self.client.close() print("連線關閉...") if __name__ == '__main__': linux = GetLinuxIp("121.196.120.113", 22, "root", "123_Xiaohaikun", "ifconfig") linux.excute_command() linux.get_result()
執行結果如圖: