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

Исходное сообщение
"expect"

Отправлено lioncub , 21-Апр-08 14:54 
Не нашел инфы по нему, по этому пишу сюда...
Как реализовать такую вещь... надо чтобы скрипт содинялся по ssh и в заыисимости от ответа посылал бы определнную команду...
К примеру, простой скрипт для авторизации:

#!/usr/bin/perl
use Expect;
$swith = "10.0.0.1";

my $exp = Expect->spawn("ssh $swith");
        $exp->expect($timeout,
        [ 'UserName:' => sub {
                            $exp->send("admin\n");
                            exp_continue; }
        ],

        [ 'PassWord:' => sub {
                            $exp->send("admin\n");
                            exp_continue; }
        ],
'-re', qr'DES:'
);

$exp->send($timeout,"logout\n");
$exp->soft_close();

Надо добавить если в ответ на Expect->spawn("ssh $swith") придет не стандартный 'UserName:', а типа:
The authenticity of host '77.247.215.100 (77.247.215.100)' can't be established.
RSA key fingerprint is 99:33:39:ee:76:77:bc:69:b6:15:39:25:8e:0e:cb:f7.
Are you sure you want to continue connecting (yes/no)?
то посылал бы команду 'yes' и т.д.!


Содержание

Сообщения в этом обсуждении
"expect"
Отправлено NuINu , 21-Апр-08 16:23 
>Не нашел инфы по нему, по этому пишу сюда...
>Как реализовать такую вещь... надо чтобы скрипт содинялся по ssh и в
>заыисимости от ответа посылал бы определнную команду...
>
>Надо добавить если в ответ на Expect->spawn("ssh $swith") придет не стандартный 'UserName:', а типа:
>The authenticity of host '77.247.215.100 (77.247.215.100)' can't be established.
>RSA key fingerprint is 99:33:39:ee:76:77:bc:69:b6:15:39:25:8e:0e:cb:f7.
>Are you sure you want to continue connecting (yes/no)?
>то посылал бы команду 'yes' и т.д.!

А ты examples к Expect смотрел?


"expect"
Отправлено lioncub , 21-Апр-08 19:21 
>А ты examples к Expect смотрел?

спасибо, вроде разобрался...

А кто знает как вывод в файл записать?


"expect"
Отправлено angra , 21-Апр-08 20:03 
Из перла что-ли?
open FH,'>', "/path/file"
print FH "текст и даже с подстановкой переменной $data"
close FH
Ну или просто использовать перенаправление в шелле

"expect"
Отправлено lioncub , 22-Апр-08 07:27 
Так не пройдет!
Всем спачибо, читать тут http://www.osp.ru/pcworld/2003/07/165973/

"expect"
Отправлено angra , 22-Апр-08 11:09 
Что и куда у тебя не пройдет, выражайся яснее.

"expect"
Отправлено geekkoo , 21-Апр-08 16:26 
>[оверквотинг удален]
>);
>
>$exp->send($timeout,"logout\n");
>$exp->soft_close();
>
>Надо добавить если в ответ на Expect->spawn("ssh $swith") придет не стандартный 'UserName:', а типа:
>The authenticity of host '77.247.215.100 (77.247.215.100)' can't be established.
>RSA key fingerprint is 99:33:39:ee:76:77:bc:69:b6:15:39:25:8e:0e:cb:f7.
>Are you sure you want to continue connecting (yes/no)?
>то посылал бы команду 'yes' и т.д.!

Как в Перле не знаю, но с expect-ом последовательность действий такая - exp_send и ждешь реакции  (expect), ответ получен - тогда снова send.
А тут у вас цикла нет, зато есть ожидание двух ответов.
Кстати, у ssh есть возможность входа без ввода паролей - по ключу или билетику...
Это - так, к слову...