Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[TIP] Automatizzazione dell'interazione con programmi
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
n3m0
l33t
l33t


Joined: 08 Feb 2004
Posts: 798
Location: Richville, Naples, Italy, Europe

PostPosted: Thu Nov 04, 2004 9:18 pm    Post subject: [TIP] Automatizzazione dell'interazione con programmi Reply with quote

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:

Code:
# emerge expect


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.
_________________
L’energia è la civiltà. Lasciarla in mano ai piromani/petrolieri è criminale. Perché aspettare che finisca il petrolio?
L’età 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
View user's profile Send private message
federico
Advocate
Advocate


Joined: 18 Feb 2003
Posts: 3270
Location: Italy, Milano

PostPosted: Thu Nov 04, 2004 9:30 pm    Post subject: Reply with quote

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
View user's profile Send private message
gutter
Moderator
Moderator


Joined: 13 Mar 2004
Posts: 7160
Location: Aarau, Aargau, Switzerland

PostPosted: Thu Nov 04, 2004 9:32 pm    Post subject: Reply with quote

Ottimo tip :wink:
_________________
Registered as User #281564 and Machines #163761
Back to top
View user's profile Send private message
n3m0
l33t
l33t


Joined: 08 Feb 2004
Posts: 798
Location: Richville, Naples, Italy, Europe

PostPosted: Fri Nov 05, 2004 6:46 am    Post subject: Reply with quote

gutter wrote:
Ottimo tip :wink:


federico wrote:
Ottimo [TIP]


Si fa quel che si può! ;)
_________________
L’energia è la civiltà. Lasciarla in mano ai piromani/petrolieri è criminale. Perché aspettare che finisca il petrolio?
L’età della pietra non è mica finita per mancanza di pietre. - B.G.


Site/Blog: http://www.neminis.org
Back to top
View user's profile Send private message
xchris
Advocate
Advocate


Joined: 10 Jul 2003
Posts: 2824
Location: 45.488291,9.186094

PostPosted: Fri Nov 05, 2004 7:05 am    Post subject: Reply with quote

molto interessante!
grazie :)
_________________
while True:Gentoo()
Back to top
View user's profile Send private message
Dhaki
Guru
Guru


Joined: 16 Jun 2004
Posts: 325
Location: Ticino - CH

PostPosted: Fri Nov 05, 2004 12:59 pm    Post subject: Reply with quote

Grande!! Proprio quello che cercavo :D

Eccellente TIP (per non dire di nuovo ottimo... :) )
Back to top
View user's profile Send private message
koma
Advocate
Advocate


Joined: 06 Jun 2003
Posts: 2700
Location: Italy

PostPosted: Mon Jan 28, 2008 3:30 pm    Post subject: Reply with quote

Grande Tip a deistanza di qlc anno è tornato strabene :D
_________________
Remember! Gnu is not Unix!
http://www.youtube.com/watch?v=_yoJI-Tl94g GLORY GLORY HYPNOTOAD
Linux Counter[code:1]
User n° #466586
ID 375005 EkatombeII
ID 375006 Apocalypto
ID 375007 KHP[/code:1]
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum