Как отправить команду в Telnet, который работает на нестандартном порту в Perl - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть один процесс-демон, написанный на perl, который слушает пользовательские команды на порту 8622.

Теперь я хочу написать клиентскую программу, которая может вызывать процесс демона с помощью команды telnet. клиентская программа должна получить выходные данные и обработать их на основе полученных результатов.

У меня нет пароля для имени пользователя для telnet, который работает на порту 8622.

Ниже приведен мой код для клиентской программы

#!/usr/bin/perl -wl 
use Net::Telnet;

$port = 8622;
$IP = '127.0.0.1';
$cmd = "CSDD"; #command to send

 $telnet = new Net::Telnet ( Timeout=>5, port=>$port, Errmode=>'die',Prompt => '/\$ $/i');
$telnet->open($IP);
#$telnet->login('',''); 

print $telnet->cmd($cmd);
$telnet->close;
exit;

Процесс-демон получает команду, но продолжает работать в бесконечном цикле, даже если проверка состояния не выполняется ни для чего.

Процесс демона работает правильно, если я запускаю telnet из командной строки.

Надеюсь, я правильно объяснил на своем плохом английском. Я очень новичок в Perl, поэтому, пожалуйста, помогите мне.

Заранее спасибо:)

1 Ответ

0 голосов
/ 21 декабря 2011

Является ли подсказка действительно знаком доллара, за которым следует пробел? Попробуйте использовать '/\$ ?$/i' или другие варианты. Существуют методы print и waitfor, которые предоставляют интерфейс более низкого уровня, чем cmd, предположительно, они будут работать.

...