我在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语句,还是应该使用其他模块或语言?如果我手动运行安装程序,我可以按预期确认“安装完成”回声。
答案 0 :(得分:0)
如图所示的代码在cd命令之后不包含换行符(“\ n”),因此发送的实际数据可能是“cd somepath./install.sh\n”,这不是工作...
此外,我在这里避免使用术语“echo”,因为使用telnet“echo”实际上是您发送的字符被发送回给您的部分(用于远程回声)。在这种情况下,无论是否发生这种情况,read_until()都不会关心。简而言之,这根本不是回声。