在 telnetlib.Telnet 上使用不同的 IP,而不是默认选择一个?

Use different IP on telnetlib.Telnet, instead of chosen by default one?

我需要进行 telnet 对话,这让我使用了官方 telnetlib 库,这里有广泛的解释:telnetlib。 实际使用这个软件的机器有几个 IP,但似乎 telnetlib 没有提供一种简单的 - 或者至少是明显的 - 方法来更改我在 telnet 会话的握手阶段使用的 IP .

有人对此有一些有用的信息吗?

telnetlib 的源代码在这里,它似乎没有提供任何指定套接字 IP 的方法,将其留给 OS 到 select,这将导致'default' 网络接口。

self.sock = socket.create_connection((host, port), timeout)

https://hg.python.org/cpython/file/2.7/Lib/telnetlib.py#l227

create_connection() 签名是:

socket.create_connection(address[, timeout[, source_address]])

If supplied, source_address must be a 2-tuple (host, port) for the socket to bind to as its source address before connecting. If host or port are ‘’ or 0 respectively the OS default behavior will be used. https://docs.python.org/2/library/socket.html

您可以复制 telnetlib.py 并修改 create_connection()

我还没有测试过这个!但是在 l227

上可能是这样的
self.sock = socket.create_connection((host, port), timeout, (src_host, src_port))

甚至向 open() 调用添加关键字参数以传递所需的接口信息。