最近一直在用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()
