Popenを使って簡単なTelnetセッションを自動化しようとしています。パイソン2.6.5に次のコードは動作しますPython 3 Popen.stdin.write encoding issues
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()
パイソン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