最近一直在用python的paramiko執行遠程命令,發現如果直接寫的話在每條命令后加分號執行時會報錯,如果不加分號,分一條命令一條命令地執行,起不到作用,如切換路徑等,后面在網上找到了相關的方法,只要在exec_command(cmd,get_pty=True)在命令語句后加get_pty=True即可。代碼如下:
def exec_command(self,cmd): client = paramiko.SSHClient() try: client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(self.hostip, self.port, username=self.username, password=self.pwd, timeout=20) stdin, stdout, stderr = client.exec_command(cmd,get_pty=True) # logWriteToTxt(self.sitename + "執行"+cmd) res="" results = stdout.readlines() for line in results: res+=line try: err=stderr.readlines() for line in err: res+=line except: pass # results = stdout.readlines() # logWriteToTxt("在" + self.sitename + "執行"+cmd + res) return res except: pass finally: client.close()