Еще раз хотелось бы поднять эту проблему. У меня теже самые результаты. При заходе на коммутатор используются Expect или модуль Perl'а Expect.pm. Скрипт не "видит" ответов des2108.
Я не настолько силен в программировании сетевых протоколов уровня приложения чтобы сказать что либо конкретное. Мои предположения основаны на нескольких экспериментах.
Вот лог согласования параметров telnet-сессии для des3226s:
Код:
RCVD DO SUPPRESS GO AHEAD
SENT WONT SUPPRESS GO AHEAD
RCVD WILL SUPPRESS GO AHEAD
SENT DO SUPPRESS GO AHEAD
RCVD WILL ECHO
SENT DO ECHO
RCVD DONT SUPPRESS GO AHEAD
Вот лог работы perl-скрипта:
Код:
DES-3226S Fast Ethernet Switch Command Line Interface
Firmware: Build 4.01-B33
Copyright(C) 2000-2004 D-Link Corporation. All rights reserved.
UserName:admin
PassWord:
DES-3226S:4#help
Available commands:
.. ? clear config
create delete dir disable
download enable login logout
ping reboot reset save
show upload
DES-3226S:4#
Вот telnet-опции для 2110:
Код:
RCVD WILL ECHO
SENT DO ECHO
RCVD WILL SUPPRESS GO AHEAD
SENT DO SUPPRESS GO AHEAD
RCVD DO TERMINAL TYPE
SENT WONT TERMINAL TYPE
RCVD DO NAWS
SENT WONT NAWS
После того как скриптом была отослана последняя опция WONT NAWS, от свича не приходит никаких данных, покрайней мере Net::Telnet их не видит.
Исходя из этого можно сделать вывод: проблема в несогласовании параметров TERMINAL TYPE или NAWS (Negotiate About Window Size). Я думаю что вероятнее всего второе. По идее, согласно описания telnet протокола, свитч на отосланый ему WONT NAWS должен ответить: DONT NAWS ну и аналогично для TERMINAL TYPE (кстати, циско делает именно так и работает). Эти опции не являются критичными или обязательными для telnet'a, но процесс согласования должен быть проведен явно.
Почему свитч ведет себя не корректно надо спрашивать у разработчиков.