URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4197
[ Назад ]

Исходное сообщение
"Контроль perl system()"

Отправлено melco , 20-Апр-05 18:55 
Подскажите пожалуйста, как мне анализировать, что идет на стандартный вывод от
system 'telnet' 'cisco'
и посылать туда чтото?

Очень благодарен за помощь!
Леоненко Дмитрий


Содержание

Сообщения в этом обсуждении
"Контроль perl system()"
Отправлено madskul , 20-Апр-05 22:14 
>Подскажите пожалуйста, как мне анализировать, что идет на стандартный вывод от
>system 'telnet' 'cisco'
>и посылать туда чтото?
>
>Очень благодарен за помощь!
>Леоненко Дмитрий
system возвращает код возврата вызванной команды.
Для получения вывода надо использовать @a=`command`;

А еще лучше, правильней так сказать:
open(F,"command|");
и работать с дескриптором.


"Контроль perl system()"
Отправлено melco , 21-Апр-05 09:25 

"Контроль perl system()"
Отправлено melco , 21-Апр-05 09:45 

"Контроль perl system()"
Отправлено melco , 21-Апр-05 09:46 
Хм, а подскажите как читать всё до последнего символа... т.к. это

open (TELNET, "$telnet|") || die "ERROR: Can not run telnet";
while(sysread(TELNET,$byte,1) == 1){print STDOUT $byte;}

отдает мне вывод только построчно.... после перевода строки... а мне нада всё до последнего


"Контроль perl system()"
Отправлено madskull , 21-Апр-05 10:11 
>Хм, а подскажите как читать всё до последнего символа... т.к. это
>
>open (TELNET, "$telnet|") || die "ERROR: Can not run telnet";
>while(sysread(TELNET,$byte,1) == 1){print STDOUT $byte;}
>
>отдает мне вывод только построчно.... после перевода строки... а мне нада всё
>до последнего
странно, у меня отрабатывает как надо, читает посимвольно.
Или, может, имеется ввиду, что пока телнет не закончит строку, скрипт не начинает считывать?
Так это уже от телнета зависит, точнее даже от стандартных функций ввода/вывода.
ИМХО.


"Контроль perl system()"
Отправлено melco , 21-Апр-05 11:30 
>>Хм, а подскажите как читать всё до последнего символа... т.к. это
>>
>>open (TELNET, "$telnet|") || die "ERROR: Can not run telnet";
>>while(sysread(TELNET,$byte,1) == 1){print STDOUT $byte;}
>>
>>отдает мне вывод только построчно.... после перевода строки... а мне нада всё
>>до последнего
>странно, у меня отрабатывает как надо, читает посимвольно.
>Или, может, имеется ввиду, что пока телнет не закончит строку, скрипт не
>начинает считывать?
>Так это уже от телнета зависит, точнее даже от стандартных функций ввода/вывода.
>
>ИМХО.

Так вот я до этого использовал IO::Socket::INET
Там тоже приходилось sysread читать посимвольно и та же лажа...
Там где строка уже перевелась - оно отрабатывает, а где оно ждет вывода - оно не отдает.
стандартный telnet отрабатывает прекрасно...