View previous topic :: View next topic |
Author |
Message |
n3m0 l33t
Joined: 08 Feb 2004 Posts: 798 Location: Richville, Naples, Italy, Europe
|
Posted: Thu Nov 04, 2004 9:18 pm Post subject: [TIP] Automatizzazione dell'interazione con programmi |
|
|
0. Ultimo aggiornamento
Questo tip è stato aggiornato l'ultima volta il: 04/11/2004
1. Prologo
Questo topic mi ha riportato alla mente dei "problemi" nei quali mi sono imbattuto tempo fa.
Vediamo quali sono questi "problemi".
Ad esempio, mai avuto il bisogno di dover far eseguire ad uno script dei programmi, che una volta in esecuzione, avrebbero richiesto l'intervento umano, in quanto bisognosi di input da tastiera (fosse anche per un login)?
Ebbene io si.
E allora provai molte strade.
La prima fu scrivere programmi da me, passando anche per la strada "perl", che permetteva di mandare caratteri al terminale tramite la comoda funzione sendkeys.
Successivamente (per non farvela troppo lunga) mi sono imbattutto in Expect.
2. Il tip
2.1 L'installazione
Banalmente:
Se avete paura di dover installare troppi pacchetti, non temete:
Code: | DEPEND=">=dev-lang/tcl-8.2
X? ( >=dev-lang/tk-8.2 )"
|
2.2 Un problema concreto
Un problema d'esempio potrebbe essere proprio il problema sottoposto nel suddetto topic.
2.3 Un esempio
Questo esempio si articola basandosi su un problema virtuale, analogo al problema concreto di cui al paragrafo precedente.
Di seguito lo script commentanto.
Code: | #!/usr/bin/expect
# $argv contiene tutti i parametri a riga di comando
set cmd $argv
# send_human occorre per l'opzione -h (human) di send
set send_human {.1 3 1 .05 2}
# Connessione automatizzata
# lancia il client ftp per la connessione al server localhost
spawn ftp localhost
# si aspetta un prompt del tipo "login: "
expect "login: "
# invia lo username
send "nemo\n"
# etc, etc.
expect "password: "
send -h "ancoranemo\n"
expect "nemo"
# qui possiamo inviare i parametri passati dalla riga di comando
send -h "$cmd\n"
expect "nemo"
send -h "exit\n" |
Tale script, eseguirà i parametri che gli vengono passati come se fossero comandi FTP; es:
Code: | # ./mioscript.exp ls |
si collegherà al sever FTP, farà login, farà un ls, dopodichè terminerà la sessione (a causa dell'ultima riga dello script).
Una nota: gli script expect non supportano i commenti sulla stessa riga del codice; es:
Code: | send -h "ancoranemo\n" # invia la password |
darebbe errore.
2.4 Approfondire
Ovviamente vi ho solo proposto un esempio per farvi capire un po' come si usasse il tutto e di cosa si trattasse.
Se volete approfondire, potete partire dal già citato sito ufficiale, usare il sempre amato man, etc.
Un consiglio è di dare uno sguardo, sul sito ufficiale, alla sezione Obtaining the examples e soprattuto a questo esempio, utile per fare questo.
2.5 Altro
- Sul sito ufficiale si trovano anche dei porting per Windows.
- Per i programmatori python, Portage suggerisce anche:
Code: | * dev-python/pexpect
Homepage: http://pexpect.sourceforge.net/
Description: Pexpect is a pure Python module for spawning child applications; controlling them; and responding to expected patterns in their output
License: PYTHON |
Spero di essere stato abbastanza chiaro.
Domani rileggo il post e vedo se ho toppato qualcosa o ho mancato delle informazioni.
Ciao a tutti. _________________ Lenergia è la civiltà. Lasciarla in mano ai piromani/petrolieri è criminale. Perché aspettare che finisca il petrolio?
Letà della pietra non è mica finita per mancanza di pietre. - B.G.
Site/Blog: http://www.neminis.org
Last edited by n3m0 on Mon Feb 14, 2005 9:58 am; edited 4 times in total |
|
Back to top |
|
|
federico Advocate
Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Thu Nov 04, 2004 9:30 pm Post subject: |
|
|
Buon software, usavo tempo fa una soluzione expect per fare delle operazioni pianificate verso un telnet remoto...
Ottimo [TIP] _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Thu Nov 04, 2004 9:32 pm Post subject: |
|
|
Ottimo tip _________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
n3m0 l33t
Joined: 08 Feb 2004 Posts: 798 Location: Richville, Naples, Italy, Europe
|
Posted: Fri Nov 05, 2004 6:46 am Post subject: |
|
|
gutter wrote: | Ottimo tip |
federico wrote: | Ottimo [TIP] |
Si fa quel che si può! _________________ Lenergia è la civiltà. Lasciarla in mano ai piromani/petrolieri è criminale. Perché aspettare che finisca il petrolio?
Letà della pietra non è mica finita per mancanza di pietre. - B.G.
Site/Blog: http://www.neminis.org |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Fri Nov 05, 2004 7:05 am Post subject: |
|
|
molto interessante!
grazie _________________ while True:Gentoo() |
|
Back to top |
|
|
Dhaki Guru
Joined: 16 Jun 2004 Posts: 325 Location: Ticino - CH
|
Posted: Fri Nov 05, 2004 12:59 pm Post subject: |
|
|
Grande!! Proprio quello che cercavo
Eccellente TIP (per non dire di nuovo ottimo... ) |
|
Back to top |
|
|
koma Advocate
Joined: 06 Jun 2003 Posts: 2702 Location: Italy
|
|
Back to top |
|
|
|