LINUX.ORG.RU

expect


0

0

Не нашел инфы по нему, по этому пишу сюда...
Как реализовать такую вещь... надо чтобы скрипт содинялся по 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' и т.д.!

★★

к сожалению по памяти не скажу, но всё это выполняется вполне прозрачно; проще всего сейчас будет прогнать данный сценарий на autoexpect и посмотреть какой скрипт он сгенерирует

а вообще тут : http://expect.nist.gov/ инфы более чем достаточно, это как же ж получилось её не найти ?..

jtootf ★★★★★
()
Ответ на: комментарий от lioncub

>http://expect.nist.gov/ - это не для перла!

в массе своей это для tcl, и ко всему прочему это официальный сайт expect. со связкой perl/expect мне не приходилось работать вообще (равно как и просто с perl), но сомневаюсь что логика работы от tcl'евской будет чем-то существенно отличаться. повторяю совет - прогони сценарий на autoexpect, посмотри сгенерированный скрипт, возьми из него нужное тебе условие

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.