Причину проблемы ориентировочно нашел - несогласованность "переговоров" свитча и терминала.
Вот запись "переговоров" с *nix терминала, где всё работает (192.168.5.10 - свитч, 10.254.213.1 - терминал)
Код:
1. 10.254.213.1 [telnet WILL AUTHENTICATION, DO ENCRYPT, WILL ENCRYPT, DO SUPPRESS GO AHEAD, WILL TERMINAL TYPE, WILL NAWS, WILL TSPEED, WILL LFLOW, WILL LINEMODE, WILL NEW-ENVIRON]
2. 192.168.5.10 [telnet DO TERMINAL TYPE] (ff fd 18)
3. 192.168.5.10 [telnet WILL ECHO] (ff fb 01)
4. 10.254.213.1 [telnet DO ECHO] (ff fd 01)
5. 192.168.5.10 [telnet WILL SUPPRESS GO AHEAD] (ff fb 03)
6. 192.168.5.10 [telnet SB TERMINAL TYPE SEND SE] (ff fa 18 01 ff f0) запрос типа терминала
7. 10.254.213.1 [telnet SB TERMINAL TYPE IS 0x58 0x54 0x45 0x52 0x4d SE] (XTERM) (ff fa 18 00 58 54 45 52 4d ff f0)
8. 192.168.5.10 [telnet DONT NAWS]
9. 192.168.5.10 [telnet DONT TSPEED]
10. 192.168.5.10 [telnet DONT LFLOW]
11. 192.168.5.10 [telnet DONT LINEMODE]
12. 192.168.5.10 [telnet DONT NEW-ENVIRON]
13. 192.168.5.10 [telnet WONT STATUS]
14. дальше вывод *** и прочей инфы от свитча, заканчивая login:(пробел)
А вот запись "переговоров" с Net::Telnet
Код:
1. 192.168.5.10 [telnet DO TERMINAL TYPE]
2. 10.254.213.1 [telnet WILL TERMINAL TYPE]
3. 192.168.5.10 [telnet WILL ECHO]
4. 10.254.213.1 [telnet DONT ECHO]
5. 192.168.5.10 [telnet WILL SUPPRESS GO AHEAD]
6. 10.254.213.1 [telnet DONT SUPPRESS GO AHEAD]
7. 192.168.5.10 [telnet SB TERMINAL TYPE SEND SE]
8. 10.254.213.1 [telnet SB TERMINAL TYPE IS 0x58 0x54 0x45 0x52 0x4d SE]
9. дальше вывод *** и прочей инфы от свитча, заканчивая login:(пробел)
Предполагаю что проблема либо здесь -
Код:
192.168.5.10 [telnet WILL SUPPRESS GO AHEAD]
10.254.213.1 [telnet DONT SUPPRESS GO AHEAD]
, либо здесь -
Код:
192.168.5.10 [telnet WILL ECHO]
10.254.213.1 [telnet DONT ECHO]
, либо в отсутствии этой "строки"
Код:
10.254.213.1 [telnet WILL AUTHENTICATION, DO ENCRYPT, WILL ENCRYPT, DO SUPPRESS GO AHEAD, WILL TERMINAL TYPE, WILL NAWS, WILL TSPEED, WILL LFLOW, WILL LINEMODE, WILL NEW-ENVIRON]
Вот дамп лога
Код:
< 0x00000: 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ..**************
< 0x00010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x00020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x00030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x00040: 2a 2a 2a 2a 2a 2a 0d 0a ******..
< 0x00000: 44 2d 4c 69 6e 6b 20 44 49 52 2d 31 30 30 20 56 D-Link DIR-100 V
< 0x00010: 65 72 20 32 2e 30 31 5f 73 77 20 46 72 69 20 4f er 2.01_sw Fri O
< 0x00020: 63 74 20 30 32 20 31 31 3a 30 31 3a 30 34 20 32 ct 02 11:01:04 2
< 0x00030: 30 30 39 009
< 0x00000: 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ..**************
< 0x00010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x00020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x00030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
< 0x00040: 2a 2a 2a 2a 2a 2a 0d 0a ******..
< 0x00000: 6c 6f 67 69 6e 3a 20 login:
> 0x00000: 61 64 6d 69 6e 0d 0a admin..
< 0x00000: 00 00 00 ...
< 0x00000: 61 64 6d adm
< 0x00000: 00 00 00 ...
< 0x00000: 69 6e 0d in.
< 0x00000: 00 00 00 ...
< 0x00000: 0a .
> 0x00000: 61 64 6d 69 6e 0d 0a admin..
< 0x00000: 00 00 00 ...
< 0x00000: 61 64 6d adm
< 0x00000: 00 00 00 ...
< 0x00000: 69 6e 0d in.
< 0x00000: 00 00 00 ...
< 0x00000: 0a .
> 0x00000: 63 66 67 0d 0a cfg..
< 0x00000: 00 00 00 ...
< 0x00000: 63 66 67 cfg
< 0x00000: 00 00 00 ...
< 0x00000: 0d 0a 50 61 73 73 77 6f 72 64 3a 20 ..Password:
> 0x00000: 70 72 6f 66 20 73 68 6f 77 0d 0a prof show..
< 0x00000: 00 00 00 ...
< 0x00000: 2a 2a 2a ***
< 0x00000: 00 00 00 ...
< 0x00000: 2a 2a 2a ***
< 0x00000: 00 00 00 ...
< 0x00000: 2a 2a 2a ***
< 0x00000: 00 00 00 ...
< 0x00000: 0d 0a 4c 6f 67 69 6e 20 69 6e 63 6f 72 72 65 63 ..Login incorrec
< 0x00010: 74 0d 0a t..
< 0x00000: 0d 0a 6c 6f 67 69 6e 3a 20 ..login:
> 0x00000: 71 75 69 74 0d 0a quit..
(пытаюсь залогиниться, перейти в "cfg" и выполнить "prof show"). Как видно из лога, проблема на этапе авторизации.
Как "научить" Net::Telnet делать то что нужно, не знаю.. Пытаюсь решить с помощью Net::Telnet::Options, но пока никак не могу въехать, как из скрипта установить требуемые параметры сессии..
