0

私は python スクリプトを変更して、telnet 経由で大量のスイッチに一括で変更を加えています。

import getpass
import sys
import telnetlib

HOST = "192.168.1.1"
user = input("Enter your remote account: ")
password = getpass.getpass()

tn = telnetlib.Telnet(HOST)

tn.read_until("User Name: ")
tn.write(user + "\n")
if password:
    tn.read_until("Password: ")
    tn.write(password + "\n")

tn.write("?\n")
tn.write("exit\n")

スクリプトが実行されると、「TypeError: バッファー インターフェイスを持つオブジェクトが必要です」というメッセージが表示されます。

4

1 に答える 1

2

ドキュメントによると、read_until仕様は次のとおりです(引用、私の強調):

所定のバイト文字列が検出されるまで読み取ります。

Python 3 では、次のようにバイト文字列を渡していません。

tn.read_until("User Name: ")

代わりに、 Python 3 では Unicode 文字列を意味するテキスト文字列を渡しています。

したがって、これを次のように変更します

tn.read_until(b"User Name: ")

このb"..."形式は、リテラルバイト文字列を指定する 1 つの方法です。

(もちろん、他のそのような呼び出しについても同様です)。

于 2010-03-06T06:30:43.870 に答える