Форум сайта python.su
0
Приветствую.
Имеется DGS-3627G, у которого телнет не хочет дружить c telnetlib.
Тестовый скрипт:
#!/usr/bin/env python2 # ~*~ coding: utf-8 ~*~ import telnetlib tn = telnetlib.Telnet('172.20.10.18') tn.set_debuglevel(1) tn.read_until("UserName:") tn.write("admin\r") tn.read_until("PassWord:") tn.write("Pa$$w0rd\r") tn.read_until("#") tn.write("logout\r") tn.close()
Telnet(172.20.10.18,23): recv '\xff\xfd\x03' Telnet(172.20.10.18,23): IAC DO 3 Telnet(172.20.10.18,23): recv '\xff\xfb\x03\xff\xfb\x01\x1b[0m\x1b[1;1H\x1b[2J\n\r DGS-36' Telnet(172.20.10.18,23): IAC WILL 3 Telnet(172.20.10.18,23): IAC WILL 1 Telnet(172.20.10.18,23): recv '27G Gigabit Ethernet Switch\n\r ' Telnet(172.20.10.18,23): recv ' Command Line Interface\n\r\n\r ' Telnet(172.20.10.18,23): recv ' Firmware: Build 2.82.B23\n\r Cop' Telnet(172.20.10.18,23): recv 'yright(C) 2010 D-Link Corporation. All rights rese' Telnet(172.20.10.18,23): recv 'rved.\n\rUserName:' Telnet(172.20.10.18,23): send 'admin\r' Telnet(172.20.10.18,23): recv '\xff\xfe\x03' Telnet(172.20.10.18,23): IAC DONT 3 Telnet(172.20.10.18,23): recv '\xff\xfc\x03' Telnet(172.20.10.18,23): IAC WONT 3 Telnet(172.20.10.18,23): recv '\xff\xfc\x01admin\n\rPassWord:' Telnet(172.20.10.18,23): IAC WONT 1 Telnet(172.20.10.18,23): send 'Pa$$w0rd\r' Telnet(172.20.10.18,23): recv '*' Telnet(172.20.10.18,23): recv '*' Telnet(172.20.10.18,23): recv '********\n\rFail!\n\rUserName:'
#!/usr/bin/env python2 # ~*~ coding: utf-8 ~*~ import sys import pexpect switch_ip = '172.20.10.18' p = pexpect.spawn('telnet %s' % switch_ip, timeout=2) p.logfile=sys.stdout p.expect('UserName:') p.sendline('admin') p.expect('PassWord:') p.sendline('Pa$$w0rd') p.expect('#') p.sendline('logout') p.close()
DGS-3627G Gigabit Ethernet Switch
Command Line Interface
Firmware: Build 2.82.B23
Copyright(C) 2010 D-Link Corporation. All rights reserved.
UserName:admin
admin
PassWord
a$$w0rd
********
DGS-3627G:admin#logout
$ telnet telnet> toggle options Will show option processing. telnet> open 172.20.10.18 Trying 172.20.10.18... Connected to 172.20.10.18. Escape character is '^]'. SENT DO SUPPRESS GO AHEAD SENT WILL TERMINAL TYPE SENT WILL NAWS SENT WILL TSPEED SENT WILL LFLOW SENT WILL LINEMODE SENT WILL NEW-ENVIRON SENT DO STATUS SENT WILL XDISPLOC RCVD DO SUPPRESS GO AHEAD SENT WILL SUPPRESS GO AHEAD RCVD WILL SUPPRESS GO AHEAD RCVD WILL ECHO SENT DO ECHO DGS-3627G Gigabit Ethernet Switch Command Line Interface Firmware: Build 2.82.B23 Copyright(C) 2010 D-Link CorpRCVD DONT TERMINAL TYPE RCVD DONT NAWS RCVD DONT TSPEED RCVD DONT LFLOW RCVD DONT LINEMODE RCVD DONT NEW-ENVIRON RCVD WONT STATUS RCVD DONT XDISPLOC oration. All rights reserved. UserName:admin PassWord:******** DGS-3627G:admin# DGS-3627G:admin#logout Command: logout ********** * Logout * ********** Connection closed by foreign host.
Офлайн
20
Да было такое поведение замечено за ДГСами (решил использованием plink из комплекта putty), на ДЕСах все нормально работает. Кажется мне, что тут бага самого D-linka, поскольку на всех других устройствах для которых пользовал telnetlib все было в порядке. Друг тоже проделывал с ДГС, но на cpp, наблюдал похожее поведение.
PS. Если разберётесь, отпишите, самому интересно.
Отредактировано noob_saibot (Июнь 3, 2016 08:40:46)
Офлайн
72
Вот эту ветку смотрели?
Офлайн
0
PooHСмотрел, но некропостить не стал.
Вот эту ветку смотрели?
Офлайн