The OpenNET Project / Index page

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

Новое ПО: empty - утилита для автоматизации интерактивных операций

19.09.2005 11:55

Утилита empty предназначена для замены TCL/Expect, т.е. позволяет запускать и управлять интерактивными программами из sh-скриптов.

Пример кода на empty:


#!/bin/sh
empty -f -i in -o out telnet foo.bar.com
empty -w -i out -o in "ogin:" "luser"
empty -w -i out -o in "assword:" "TopSecret"
empty -s -o in "who am i"
empty -s -o in "exit"

Тоже самое на expect:


#!/usr/bin/expect
spawn telnet foo.bar.com 
expect ogin {send luser\r}
expect assword {send TopSecret\r}
send "who am i\r" 
send "exit\r"
expect eof

На perl:


#!/usr/bin/perl
use Expect;
my $exp = Expect->spawn("telnet foo.bar.com");
$exp->expect($timeout,
        [ 'ogin: $' => sub {
                     $exp->send("luser\n");
                     exp_continue; }
        ],
        [ 'assword:$' => sub {
                      $exp->send("TopSecret\n");
                      exp_continue; }
        ],
        '-re', qr'[#>:] $'
);
$exp->send("who am i\n");
$exp->send("exit\n");
$exp->soft_close();

На Python:


#!/usr/local/bin/python

import pexpect

child = pexpect.spawn('telnet foo.bar.com');

child.expect('ogin: ');
child.sendline('luser');

child.expect('assword:');
child.sendline('TopSecret');

child.sendline('who am i');
child.sendline('exit');

child.expect(pexpect.EOF);

print child.before;



  1. Главная ссылка к новости (http://empty.sourceforge.net...)
Автор новости: mezantrop
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/6108-expect
Ключевые слова: expect, shell
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (8) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, reaper (??), 14:07, 19/09/2005 [ответить]  
  • +/
    http://www.opennet.me/base/dev/interactive_tools.txt.html не оно?
     
  • 1.2, Chris (??), 14:10, 19/09/2005 [ответить]  
  • +/
    Вопрос, а будет ли нормально дожидаться конца вывода? Можно ли будет куданить вывод заворачивать, чтобы видеть что она там наделала? Потому как Expect насчет этого полное г.
     
  • 1.3, mezantrop (??), 14:18, 19/09/2005 [ответить]  
  • +/
    Создается два пайпа: один для ввода другой для вывода. Впринципе, никто не мешает писать в первый  (например припомощи echo) и читать из второго (при помощи cat, например)
     
  • 1.4, mezantrop (??), 10:06, 20/09/2005 [ответить]  
  • +/
    Если вы вдруг начали использовать empty, очень прошу сообщить мне на email zmey20000@yahoo.com или, зная ленность людей, сюда в форум (надеюсь, Maxim Chirkov поймет и не будет сильно против) следующую информацию:
    а. свой uname -a
    б. если не слишком сложно, что вам понравилось в empty, а что нет.

    Хочется знать, на что ориентироваться в следующих версиях.

     
  • 1.5, spektom (?), 14:53, 21/09/2005 [ответить]  
  • +/
    Было бы прикольно, если бы работа с PTY была вынесена в отдельную библиотеку libempty - я бы заюзал с удовольствием. А то libexpect тяжеленный, да и TCL просит, кажись...
     
     
  • 2.6, mezantrop (??), 17:29, 21/09/2005 [^] [^^] [^^^] [ответить]  
  • +/
    задумаюсь, но в планы не входило.
     

  • 1.7, Storm (??), 18:10, 22/09/2005 [ответить]  
  • +/
    PTY позволит работать с ssh с паролями, года два назад делал расширение для php, почти аналогично приведенному для Python
     
  • 1.8, Аноним (8), 21:01, 19/03/2008 [ответить]  
  • +/
    2 Storm
    если сохранилось решение для php - поделитесь?
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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