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