通过SSH隧道的python Telnet

通过SSH隧道的python Telnet,python,networking,ssh,telnet,Python,Networking,Ssh,Telnet,我编写了一个python脚本,它将启动一个SSH会话,然后将Telnet连接到一个交换机中。使用pexpect、pxsh和telnetlib 一切似乎都在工作,我可以访问一些交换机。但对于大多数人来说,我犯了这样一个错误: socket.error:[Errno 111]连接被拒绝 或者有时: 没有到主机的路由 我检查过了,默认端口上有一台服务器正在侦听,我的防火墙已关闭 请注意,交换机没有任何限制,我的IP被列为白名单* 同样,当我尝试在脚本之外(在shell中)使用SSH和TELNET命

我编写了一个python脚本,它将启动一个SSH会话,然后将Telnet连接到一个交换机中。使用pexpect、pxsh和telnetlib

一切似乎都在工作,我可以访问一些交换机。但对于大多数人来说,我犯了这样一个错误:

socket.error:[Errno 111]连接被拒绝

或者有时:

没有到主机的路由

我检查过了,默认端口上有一台服务器正在侦听,我的防火墙已关闭

  • 请注意,交换机没有任何限制,我的IP被列为白名单*
同样,当我尝试在脚本之外(在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

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')