繁体   English   中英

通过SSH隧道进行python Telnet

[英]python Telnet through a SSH tunnel

我写了一个python脚本,它将启动SSH会话,然后它将Telnet到交换机。 使用pexpect,pxssh和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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM