telnetlib 类型错误

发布于 2024-08-24 04:54:20 字数 461 浏览 6 评论 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:预期带有缓冲区接口的对象”任何见解都会有所帮助。

I am modifying a python script to make changes en masse to a hand full of switches via 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")

When the script executes I receive a "TypeError: expected an object with the buffer interface" Any insight would be helpful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时间你老了 2024-08-31 04:54:20

根据文档read_until 的规格是(引用,我的重点):

读取直到给定的字节字符串,
预料之中,遇到了

在 Python 3 中,您没有传递 byte 字符串,例如:

tn.read_until("User Name: ")

,您传递的是 text 字符串,这在 Python 3 中意味着统一码字符串。

因此,将其更改为

tn.read_until(b"User Name: ")

b"..." 形式是指定文字 byte 字符串的一种方法。

(当然对于其他此类调用也类似)。

Per the docs, read_until's specs are (quoting, my emphasis):

Read until a given byte string,
expected, is encountered

You're not passing a byte string, in Python 3, with e.g.:

tn.read_until("User Name: ")

Instead, you're passing a text string, which in Python 3 means a Unicode string.

So, change this to

tn.read_until(b"User Name: ")

the b"..." form is one way to specify a literal byte string.

(Similarly for other such calls of course).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文