我正在嘗試使用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