The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"perl Expect"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"perl Expect"  +/
Сообщение от аноним on 24-Ноя-09, 16:11 
набросал тестовый скриптик:

#!/usr/local/bin/perl -w

use strict;
use Expect;

my $SSH="/usr/bin/ssh";
my $timeout=20;
my ($host, $login,$pass)=('127.0.0.1','test','xxx');

my $ssh=new Expect;
$ssh->raw_pty(1);
$ssh->spawn($SSH,"-l", $login,$host)||die "can't spawn ssh: $!\n";
my $spawn_ok;
$ssh->expect($timeout,
        ['assword:', sub{
                $ssh->send("$pass\n");
                exp_continue;}
        ],
        '-re', qr'[\$#>:]$'
);
$ssh->send("uname -a\n");
$ssh->send("exit\n");
$ssh->soft_close();

все отлично, кроме того, что не могу найти функцию или способ получения результата выполнения команды "uname -a" для последующего анализа в скрипте, т.е. хочется, но не можется, что-то такое:
my $s = $ssh->send("uname -a\n");
if ($s =~ /tratata/){lalala}

извините, если вопрос совсем ламерский, но не могу найти/решить/рзобраться

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

Оглавление

  • perl Expect, XAnder, 17:45 , 24-Ноя-09, (1)  
    • perl Expect, аноним, 20:44 , 24-Ноя-09, (2)  
      • perl Expect, XAnder, 09:20 , 25-Ноя-09, (3)  

Сообщения по теме [Сортировка по времени | RSS]


1. "perl Expect"  +/
Сообщение от XAnder (ok) on 24-Ноя-09, 17:45 
>$ssh->send("uname -a\n");
>$ssh->send("exit\n");
>
>все отлично, кроме того, что не могу найти функцию или способ получения
>результата выполнения команды "uname -a" для последующего анализа в скрипте

Если не ошибаюсь, нужно после send сделать expect, который и должен будет дождаться и получить вывод, точно так же, как до того ждали 'assword:'.

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

2. "perl Expect"  +/
Сообщение от аноним on 24-Ноя-09, 20:44 
покрутил before и after с expect-ом, но добиться ничего не получается, видать руки совсем не от туда растут и документацию читать не умею...
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "perl Expect"  +/
Сообщение от XAnder (ok) on 25-Ноя-09, 09:20 
>покрутил before и after с expect-ом, но добиться ничего не получается, видать
>руки совсем не от туда растут и документацию читать не умею...

Сейчас попробовал, работает вот так:

$ssh->send("uname -a\n");
my ($pos, $err, $match, $before, $after) = $ssh->expect($timeout, '-re',  qr/[\$#>:]\s*$/);
print $before;

Здесь мы дожидаемся вывода очередного приглашения оболочки, а затем смотрим, что вывелось до (before) него.

Правда, мне неохота было с ssh заморачиваться, и я заменил его на обычный sh. Но, думаю, суть от этого не изменилась.

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

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

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




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

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