Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Forum italiano (Italian) Risorse italiane (documentazione e tools)
  • Search

[TIP] Automatizzazione dell'interazione con programmi

Forum riservato alla documentazione in italiano.

Moderator: ago

Post Reply
  • Print view
Advanced search
7 posts • Page 1 of 1
Author
Message
n3m0
l33t
l33t
User avatar
Posts: 798
Joined: Sun Feb 08, 2004 11:13 am
Location: Richville, Naples, Italy, Europe
Contact:
Contact n3m0
Website

[TIP] Automatizzazione dell'interazione con programmi

  • Quote

Post by n3m0 » Thu Nov 04, 2004 9:18 pm

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: Select all

# emerge expect
Se avete paura di dover installare troppi pacchetti, non temete:

Code: Select all

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: Select all

#!/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: Select all

# ./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: Select all

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: Select all

    *  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.
Last edited by n3m0 on Mon Feb 14, 2005 9:58 am, edited 4 times in total.
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
Top
federico
Advocate
Advocate
User avatar
Posts: 3272
Joined: Tue Feb 18, 2003 2:08 pm
Location: Italy, Milano
Contact:
Contact federico
Website

  • Quote

Post by federico » Thu Nov 04, 2004 9:30 pm

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
Top
gutter
Bodhisattva
Bodhisattva
User avatar
Posts: 7162
Joined: Sat Mar 13, 2004 10:37 pm
Location: Aarau, Aargau, Switzerland
Contact:
Contact gutter
Website

  • Quote

Post by gutter » Thu Nov 04, 2004 9:32 pm

Ottimo tip :wink:
Registered as User #281564 and Machines #163761
Top
n3m0
l33t
l33t
User avatar
Posts: 798
Joined: Sun Feb 08, 2004 11:13 am
Location: Richville, Naples, Italy, Europe
Contact:
Contact n3m0
Website

  • Quote

Post by n3m0 » Fri Nov 05, 2004 6:46 am

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
Top
xchris
Advocate
Advocate
User avatar
Posts: 2824
Joined: Thu Jul 10, 2003 10:21 pm

  • Quote

Post by xchris » Fri Nov 05, 2004 7:05 am

molto interessante!
grazie :)
while True:Gentoo()
Top
Dhaki
Guru
Guru
User avatar
Posts: 325
Joined: Wed Jun 16, 2004 3:23 pm
Location: Ticino - CH

  • Quote

Post by Dhaki » Fri Nov 05, 2004 12:59 pm

Grande!! Proprio quello che cercavo :D

Eccellente TIP (per non dire di nuovo ottimo... :) )
Top
koma
Advocate
Advocate
User avatar
Posts: 2702
Joined: Fri Jun 06, 2003 10:13 am
Location: Italy
Contact:
Contact koma
Website

  • Quote

Post by koma » Mon Jan 28, 2008 3:30 pm

Grande Tip a deistanza di qlc anno è tornato strabene :D
http://www.youtube.com/watch?v=_yoJI-Tl94g GLORY GLORY HYPNOTOAD
Top
Post Reply
  • Print view

7 posts • Page 1 of 1

Return to “Risorse italiane (documentazione e tools)”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic