我正在尝试使用Popen来自动化一个简单的Telnet会话。在python 2.6.5下面的代码工作:Python 3 Popen.stdin.write编码问题
openCmd = subprocess.Popen("telnet 192.168.1.1", shell=True, stdout=PIPE, stdin=PIPE)
time.sleep(1)
openCmd.stdin.write("username\r")
time.sleep(1)
openCmd.stdin.write("password\r")
time.sleep(1)
openCmd.stdin.write("some command\r")
openCmd.terminate()
在Python 3它抱怨类型的错误,所以我我不得不.encode()添加到每个STR对象的端部(如下所示)。添加.encode()确实修复了类型错误,并且我没有得到任何异常,但是我试图在远程机器上运行的命令没有运行。
openCmd = subprocess.Popen("telnet 192.168.1.1", shell=True, stdout=PIPE, stdin=PIPE)
time.sleep(1)
openCmd.stdin.write("username\r".encode())
time.sleep(1)
openCmd.stdin.write("password\r".encode())
time.sleep(1)
openCmd.stdin.write("some command\r".encode())
openCmd.terminate()
我也尝试过.encode(“ascii”)和.encode(“UTF-8”)。我做错了什么?我想问题是编码,但我不知道......我在运行Ubuntu 10.04的机器上运行这个程序。
包含完整的回溯。 – agf
@agf没有回溯 - 我试图在远程机器上运行的命令根本就没有执行。 – jintoreedwine