我尝试使用paramiko在远程Linux机器上安装软件(它基本上是一个shell脚本)。 我知道一旦运行该软件将提示最终用户许可接受(y或n)。 所以我写了如下脚本,
==================== `
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect ('remoteLinuxHost', username=r'user', password='pass')
stdin, stdout, stderr = ssh.exec_command(r'/full/path/to/software')
stdin.write("y\n")
stdin.flush()
print "output ", stdout.readlines()
这在Red Hat机器上运行得非常好,但同样的代码永远挂在Suse Linux上! (只需打印输出,脚本将继续运行)
注意: 当它挂在Suse上时,我手动检查了
ps -ef | grep 'software' that displayed,
root 10941 10938 1 21:10 ? 00:00:00 /bin/sh software
root 11050 11031 0 21:10 ? 00:00:00 more softwareEndUserLicense.txt
这证实此处没有回答提示(y或n)。
请建议。 谢谢。