1

我在 python 中编写了一个脚本,它使用 telnetlib 模块远程登录到 linux 设备,运行 install.sh 文件,然后在完成后重新启动。完成 install.sh 脚本后,我添加了一行,将 echo "install complete" 发送到终端。不幸的是, read_until("install complete") 和 expect(["install complete"]) 没有检测到这个回声。

tn = telnetlib.Telnet(ip)
tn.read_until("login: ")
tn.write(user + "\n")
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("cd [file path to the install script]")#echoes "install complete" when finished
tn.write("./install.sh\n")
tn.read_until("install complete")  #where the process hangs returns None if I add timeout parameter

telnetlib 没有达到 echo 语句还是我应该使用其他模块或语言?如果我手动运行安装程序,我可以按预期确认“安装完成”回声。

4

1 回答 1

0

所示代码在 cd 命令后不包含换行符(“\n”),因此发送的实际数据可能是“cd somepath./install.sh\n”,这不起作用。 .

另外,我会避免在这里使用术语“echo”,因为使用 telnet,“echo”实际上是将您发送的字符发送回给您的部分(用于远程回显)。在这种情况下,无论是否发生, read_until() 都不会关心。简而言之,这根本与回声无关。

于 2014-01-01T20:31:36.103 回答