为了使telnet会话自动化,我使用pythons作为unix中expect shell的替代。我尝试了expect,它运行得很好,但是我想使用python的特性。一个正常的"telnet主机端口“工作正常。以下简单代码将产生异常:
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
我是在一个远程主机上运行的,一个红帽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
如果我想连接到localhost,但只连接到localhost,telnetlib就能工作。我也尝试过其他的telnet服务器,并且我得到了同样的“网络是不可访问的”错误。
我也知道pexpect是存在的,但如果可能的话,我更愿意使用telnetlib。
发布于 2017-11-10 16:40:40
现在起作用了。解决方案很简单,终止并重新启动会话到我运行脚本的远程主机。它以前不起作用的原因仍然让我无法理解,然而,过去我使用NX访问主机时遇到了一些问题。
https://stackoverflow.com/questions/47226895
复制相似问题