The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Perl Net::Telnet Stream"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Perl Net::Telnet Stream" 
Сообщение от melco emailИскать по авторуВ закладки(ok) on 17-Апр-05, 22:18  (MSK)
Привет.
Подскажите пожалуйста, как мне с помощью Net::Telnet организовать интерактивный telnet shell, такой как при использовании простого telnet.
У меня задача такая, чтобы при нажатии клавиши она сразу посылалась хосту, а не ждала нажатия Enter и при этом чтобы всё, что отдает мне хост сразу появлялось у меня на STDOUT. Допустим для Cisco если я жму ? то cisco отдает мне список доступных команд.
Как это реализовать с помощью net::telnet

Зарание очень благодарен,
Дмитрий Леоненко.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Perl Net::Telnet Stream" 
Сообщение от PoizOn emailИскать по авторуВ закладки(ok) on 18-Апр-05, 10:23  (MSK)
>Привет.
>Подскажите пожалуйста, как мне с помощью Net::Telnet организовать интерактивный telnet shell, такой
>как при использовании простого telnet.
>У меня задача такая, чтобы при нажатии клавиши она сразу посылалась хосту,
>а не ждала нажатия Enter и при этом чтобы всё, что
>отдает мне хост сразу появлялось у меня на STDOUT. Допустим для
>Cisco если я жму ? то cisco отдает мне список доступных
>команд.
>Как это реализовать с помощью net::telnet
>
>Зарание очень благодарен,
>Дмитрий Леоненко.
Для перехвата одного нажатия клавиши (как в Cisco :), используйте модуль Term::ReadKey.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Perl Net::Telnet Stream" 
Сообщение от madskull Искать по авторуВ закладки(ok) on 18-Апр-05, 11:57  (MSK)
Я бы, наверное, использовал IO::Socket, не забыв сделать $socket->autoflush(1);

Или (если нужна работа с Cisco) внимательно посмотрел бы на Net::Telnet::Cisco

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Perl Net::Telnet Stream" 
Сообщение от melco Искать по авторуВ закладки(ok) on 18-Апр-05, 12:37  (MSK)
Вот мой код, написанный с использованием Net::Telnet
Проблема тут только в одном - после первого нажатия Enter мне на экран не появляется строка, а просто остается пустота, а при следующих нажатиях любых клавиш идет отставание на 1 символ в выводе....
Странно то, что я смотрю tail -f /tmp/out.log и tail -f /tmp/inp.log и там всё идет вовремя за исключением злополучного Enter'а


#!/usr/local/bin/perl -w
sub printhelp {
    print "=============  HELP  ==============\n";
    print "To connect to host type\n:<hostname>\n";
    print "with <hostname> changed to cisco hostname or IP address\n\n";
    print "To see help type help\n";
              }
sub get_login {
    print "Username:";my chomp($username=<STDIN>);
    print "Password:";my chomp($password=<STDIN>);
              }
use Term::ReadKey;
use Net::Telnet;
use Net::Ping;
start:
#$p = Net::Ping->new();
while (not defined($cmd)){
    print "CIPE>";$input=<STDIN>;
    if ($input =~ /\:(.*)\n/) {$cmd=$1;}
    else {&printhelp;goto start;}
#    if ($p->ping($cmd)){
        print "Connecting to $cmd\n";
        $conn = new Net::Telnet (Timeout => 5,
                                 Dump_log=>"/tmp/dul2.log",
                                 input_log=>"/tmp/out.log",
                                 output_log=>"/tmp/inp.log",
                                 binmode=>1
                                 );
        if (not defined($password)){&get_login;}
        $conn->open(host => $cmd);
        $conn->waitfor('/Username.*$/');
        $conn->print($username);
        print ($conn->get);
        $conn->waitfor('/Password.*$/');
        $conn->print($password);
        print ($conn->get);
        while($conn){
        Readmode 4;
        while(not(ReadKey(-1))){
         if (defined($key)){
             $conn->put($key);
             print ($conn->get);
             undef(key);
                            }
                                }
                    }
                        }

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру