em Posted June 15, 2012 Report Posted June 15, 2012 Scriu acest mini-tutorial ca s? v? deschid apetitul pentru acest limbaj de scripting de nivel înalt.Cum îl instalez?# apt-get install expectCe po?i face cu el?Diferite automatiz?ri pentru programe CLI / testare de corectitudine pentru programe scrise de voi.Exemple* Hello World#!/usr/bin/expectexpect "hello"send "world"Asteptari:Va scrie hello pe ecran si asteapta "world" scris de voi. Nu se opreste pana nu scrieti.Poate v? gândi?i "cât timp a?tept??". Cât vre?i voi. 10 secunde de exemplu.#!/usr/bin/expect[b]set timeout 10[/b]expect "hello"send "world"* Vreau un script care s? încerce s? se conecteze prin ssh la un server prin parametrii primi?i de la linia de comand? ?i s? îmi p?streze conexiunea doar dac? serverul are o anumita versiune de kernel.#!/usr/bin/expectset timeout 5set ip [lindex $argv 0]set user [lindex $argv 1]set password [lindex $argv 2]spawn ssh "$user\@$ip"expect { "*yes/no*" { send "yes\r" expect "*password:" send "$password\r" } "*password:" { send "$password\r" }}expect "$user\@"send "uname -r\r"expect { "2.6.18*" { interact } "2.*" { exit }}Testare: ./test.exp 127.0.0.127 root parolaemAici a?i mai înv??at c? suport? ?i parametrii în linia de comand? + regex. Din codul ?sta poate fi f?cut un proiect interesant (de exemplu poate fi scris astfel încât s? trag? diverse exploituri pentru diverse versiuni de kernel ?i s? vad? dac? poate lua root).* Un snippet care imi descarc? toate fi?ierele de pe un server ftp...expect "username:"send "$my_user_id\r"expect "password:"send "$my_password\r"expect "ftp>"send "bin\r"expect "ftp>"send "prompt\r"expect "ftp>"send "mget *\r"expect "ftp>"send "bye\r"expect eof..ConcluzieExpect este un utilitar foarte bun acolo unde avem programe CLI dar nu avem puterea de a scrie scripturi.Alte resurse:- man expect- Expect - Wikipedia, the free encyclopedia- 6 Expect Script Examples to Expect the Unexpected (With Hello World) 1 Quote
Zatarra Posted June 15, 2012 Report Posted June 15, 2012 E bun doar cand sti ce output primesti, daca nu e degeaba. L-am folosit de cateva ori sa trimit parola, in rest nu prea ma atrage. Quote
Guest Kovalski Posted June 15, 2012 Report Posted June 15, 2012 interesant, am sa ma uit prin el maine si am sa iti spun parerea mea Quote
aelius Posted June 15, 2012 Report Posted June 15, 2012 E super, poti face niste scripturi geniale prin care sa te conectezi la routere si sa executi comenzi Quote
em Posted June 16, 2012 Author Report Posted June 16, 2012 @ZatarraCorect. Dar în general mul?imea de output-uri e finit? (îl po?i pune s? fac? matching ?i pe * într-un case, un fel de caz default în care s? faci ceva dac? ai output necunoscut). Nu e bun pentru orice, dar e bine ca to?i s? ?tie c? exist?. Quote
cmiN Posted June 16, 2012 Report Posted June 16, 2012 E foarte bun mai ales daca-l combini cu Py ... scapi de toata bataia de cap cu popen. E doar o unealta, nu trebuie sa fie bun la toate ci doar pe particica lui. Quote