无法使用 pythons telnetlib 远程登录到远程主机,尽管 bash telnet <host> <port> 有效

Unable to telnet to remote host using pythons telnetlib, although bash telnet <host> <port> works

我正在使用 pythons telnetlib 作为 unix 中 expect shell 的替代,以便自动执行 telnet 会话。我已经尝试过 expect 并且它工作正常,但我想使用 python 中的功能。正常的 "telnet HOST PORT" 工作正常。以下简单代码会产生异常:

import telnetlib
tn = telnetlib.Telnet('xxx.xxx.xxx.xxx', PORT)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/telnetlib.py", line 209, in __init__
    self.open(host, port, timeout)
  File "/usr/lib64/python2.7/telnetlib.py", line 225, in open
    self.sock = socket.create_connection((host, port), timeout)
  File "/usr/lib64/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 101] Network is unreachable

我是运行这个来自远程主机,一个redhat linux发行版。我还尝试使用 socket.connect() 创建连接并收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 101] Network is unreachable

如果我想连接到本地主机,telnetlib 可以工作,但只能连接到本地主机。我也尝试过其他 telnet 服务器,但我得到了相同的 "Network is unreachable" 错误。

我也知道 pexpect 存在,但如果可能我更愿意使用 telnetlib。

现在可以了。解决方案很简单,终止并重新启动与我所在的远程主机的会话 运行 脚本。之前它不起作用的原因仍然让我无法理解,但是过去我用来访问主机的 NX 一直存在问题。