我写了一个python脚本,它将启动SSH会话,然后它将Telnet到交换机。使用pexpect,pxssh和telnetlib。
一切似乎都正常,并且我能够访问某些开关。但是对于大多数人来说,都会出现此错误:
socket.error:[Errno 111]连接被拒绝
或有时:
没有路线可容纳
我检查了一下,有一个服务器正在侦听默认端口,并且我的防火墙已关闭。
似乎还有些什么,当我尝试在脚本(在shell中)之外使用SSH和TELNET命令时,一切都会正常运行,并且我可以访问该交换机。
我将不胜感激。
from pexpect import pxssh
import sys
import telnetlib
s = pxssh.pxssh()
hostname = ('#')
username = ('##')
password = ('###')
#LOGIN TO SSH HOST
s.login(hostname,username,password)
user=('####')
passw=('#####')
tn = telnetlib.Telnet(host)
tn.read_until("username: ")
tn.write(user+"\n")
tn.read_until("password: ")
tn.write(passw+"\n")
tn.write("terminal length 0\n")
tn.write("show interface description\n")
tn.write("exit\n")
data = tn.read_all()
print data
答案 0 :(得分:0)
SSH本身并不是一个隧道。这是一个应用层协议。 Telnet(也是一种应用程序层协议)至少需要TCP层隧道。如果要在SSH内 telnet 进行远程登录,则需要通过SSH在远程服务器上使用telnet
命令。
from pexpect import pxssh
s = pxssh.pxssh()
hostname = ('#')
username = ('##')
password = ('###')
s.login(hostname,username,password)
s.sendline('telnet [your hostname]')
s.sendline('show interface description\n')