Aştepta

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
aştepta
software
Tip
Dezvoltator Don Libes
Ultima versiune 5.45.4 (4 februarie 2018)
Sistem de operare Linux
Microsoft Windows
Unix-like
Limba Tcl
Licență domeniu public
( Licență gratuită )
Site-ul web core.tcl.tk/expect/index

În informatică, Expect este un instrument de administrare a sistemului de tip Unix , scris de Don Libes pentru automatizarea aplicațiilor interactive precum SSH , SFTP , Telnet , FTP , rlogin . Este o extensie a limbajului tcl . Folosește un pty pentru a rula un fir transparent, permițând automatizarea proceselor care sunt accesibile prin terminal. Cu extensia Tk aplicațiile pot fi rulate în GUI X11.

Expect profită de expresiile obișnuite , permițându-vă să creați scripturi pentru a controla inteligent programele care nu au un script sau un sistem macro în ele.

Exemple

Iată un script simplu care automatizează o sesiune telnet.

 # Să presupunem că $ remote_server, $ my_user_id, $ my_password și $ my_command sunt citite anterior
# în scenariu.
# Deschideți o sesiune telnet pe un server la distanță, trimiteți utilizator și parolă, executați o comandă.

spawn telnet $ remote_server
așteptați „nume de utilizator:”
# Trimiteți numele de utilizator
trimiteți „$ my_user_id \ r”
# Așteptați promptul, în unele cazuri trimiteți parola sau comandă
# înainte ca promptul să poată provoca probleme.
așteptați „parolă:”
# Trimiteți parola și așteptați din nou solicitarea
trimiteți „$ my_password \ r”
așteptați „%”
# Trimiteți comanda
trimiteți „$ my_command \ r”
așteptați „%”
# Salvați ieșirea comenzii în variabila „rezultat”
# Această variabilă poate fi vizualizată mai târziu sau salvată în fișier
setează rezultatele $ expect_out ( tampon )
# Trimiteți comanda de deconectare și așteptați eof
trimite "exit \ r"
așteptați eof

Un exemplu de

 #! / usr / local / bin / expect -f
# `- introduceți poziția de așteptare aici
# pentru a afla locația expect, executați „care se așteaptă” pe terminal

# Procedura de conectare.
# Returnează 0 dacă are succes, 1 altfel.

proc connect { passw } {
  așteptați {
    „Parolă:” {
      trimiteți „$ passw \ r”
        așteptați {
          „sftp *” {
            returnează 0
          }
        }
    }
  }
  # expirat
  retur 1
}

# Citiți parametrii dați pe linia de comandă
set user [ lindex $ argv 0 ]
set passw [ lindex $ argv 1 ]
set host [ lindex $ argv 2 ]
setați locația [ lindex $ argv 3 ]
set file1 [ lindex $ argv 4 ]
set file2 [ lindex $ argv 5 ]

# descomentând următoarele rânduri imprimați un CV al parametrilor de intrare
#puts "Date argument: \ n";
#puts "utilizator: $ utilizator";
#puts "passw: $ passw";
#puts "gazdă: $ gazdă";
#puts "locație: $ locație";
#puts "file1: $ file1";
#puts "fișier2: $ fișier2";
 
# Verificați dacă toți parametrii au fost introduși.
dacă { $ utilizator == "" || $ passw == "" || $ host == "" || $ locație == "" || $ file1 == "" || $ file2 == "" } {
  pune "Utilizare: <utilizator> <passw> <host> <location> <file1 to send> <file2 to send> \ n"
  ieșirea 1
}
 
# Conectați-vă la gazdă
spawn sftp $ user @ $ host

# Executați procedura de „conectare”
set rez [ connect $ passw ]

# Dacă parola a fost trimisă cu succes, trimiteți fișierul și terminați scriptul
dacă { $ rez == 0 } {
  trimiteți „locația cd $ \ r”
  set timeout - 1
  trimiteți "puneți $ file2 \ r"
  trimiteți „puneți $ file1 \ r”
  trimite "ls -l \ r"
  trimite "ieși \ r"
  așteptați eof
  ieșire 0
}

# Dacă trimiterea parolei a dat o eroare, tipăriți un mesaj de eroare și ieșiți.
pune "\ nEroare la conectarea la server: $ gazdă, utilizator: $ utilizator și parolă: $ passw! \ n"
ieșirea 1

Utilizare

Expect este folosit ca „lipici” pentru a conecta diferite instrumente împreună. Ideea generală este de a utiliza instrumentele existente în sistem pentru a rezolva problemele, mai degrabă decât a le rezolva în limita așteptărilor.

Cheia succesului Expect este utilizarea cu software comercial, multe dintre aceste programe au un fel de interfață de linie de comandă, dar suferă de lipsa unui sistem de automatizare serios, deoarece sunt concepute pentru administrarea utilizatorilor. . Un script expect poate verifica variabilele de mediu pentru a prelua mai multe informații, integrându-le cu comenzile Unix și, în cele din urmă, să intre în interfața produsului, să efectueze acțiuni și să ia decizii inteligente cu privire la acțiunile pe care să le efectueze.

De fiecare dată când se finalizează o operațiune expect, rezultatul este salvat într-o variabilă numită $ expect_out. Acest lucru vă permite să măriți informațiile care trebuie afișate utilizatorului și vă ajută să luați o decizie asupra comenzii pe care să o trimiteți în funcție de circumstanțe.

Există suite de testare bazate pe Expect. DejaGNU este o suită de testare utilizată pe scară largă pentru testarea gcc și foarte convenabilă pentru testarea pe ținte la distanță, cum ar fi platformele încorporate.

Puteți genera automat scripturi cu autoexpect. Acest instrument observă acțiunile unei sesiuni de lucru și generează scriptul de așteptare folosind euristică. Scriptul generat este adesea lung și dificil de înțeles, dar este întotdeauna posibil să curățați scriptul pentru a obține un cod mai curat.

Puteți porni scriptul prin cron pentru a efectua sarcini de administrare programate. Nu este nevoie de nicio modificare, deoarece folosește doar instrumente ale sistemului pe care rulează.

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT