Мне нужна помощь с Net:Telnet. Пытаюсь подключиться к терминалу VT-100. При использовании обычного телнета из консоли все работает нормально. Я могу подключаться и выдавать команды, но когда я пытаюсь сделать то же самое из Perl, он подключается, но затем ничего не происходит - у меня нет вывода или ожидания просто тайм-ауты или отображается, что подсказка не соответствует (но это так, потому что это всегда три буквы и > знак). Я пробовал все возможные способы -> используя такие методы, как print, cmd, put, но безуспешно и застрял на этом на 2 дня.
Вот мой пример кода:
use Net::Telnet ();
my $conn = new Net::Telnet (TelnetMode => 0);
unless ($conn->open(Host => $host, Port => 23))
{
die "Error opening socket:: ".$conn->errmsg();
}
print "Connected to ".$conn->host().", port ".$conn->port()."\n";
$conn->prompt('/...>/'); # prompt is 014>
my $lines = $conn->put("15\r"); # command 15 to give me the site name
my ($a,$b);
($a,$b) = $conn->waitfor(Match=>'/...>/',Timeout=>100);
$conn->close;
Когда введена неправильная команда, обычно telnet отображает сообщение об ошибке и подсказку, но Perl ничего не делает. Журнал ввода пуст, журнал вывода пуст, а журнал дампа содержит только следующее:
0x00000: 31 35 0d 0a 15..
Я не знаю, что еще попробовать.
Вот как выглядит обычный вывод сеанса telnet:
Trying xxx.xxx.xxx.xxx...
Connected to xxx.xxx.xxx.xxx.
Escape character is '^]'.
014>15
15
014 TMR Name
014>^]
telnet> quit
Connection closed.
Любая помощь приветствуется
Net::Telnet
- в протоколе с открытым текстом, таком как telnet, есть много недостатков, и поэтому в наши дни он отключен по умолчанию на большинстве серверов. - person Sobrique   schedule 10.02.2015