Portál AbcLinuxu, 13. května 2025 19:42

Dotaz: Expect a vetveni podle vystupu

19.4.2006 18:43 robert.mil
Expect a vetveni podle vystupu
Přečteno: 391×
Odpovědět | Admin
V RedHat 8.0, kernel 2.4.20, se snazim udelat skript, pomoci nejz se telnetem prihlasim na vzdalene zarizeni. Na tom zarizeni potrebuji zjistit, jestli se tam vyskytuje jeden soubor (address). Pokud ano, skript skonci, pokud ne, provede se prikaz reboot ktery toto zarizeni restartuje. Pro realizaci chci vyuzit prikaz expect. Mam nasledujici kod:
#!/usr/bin/expect -f
set host [lindex $argv 0]
spawn telnet "$host"
expect "login:"
send "root\r"
expect "word:"
send "root2root\r"
expect "commands."
send "ls /tmp/script/address\r"
expect {
    "directory"  {send "reboot\r";exp_continue}
    "address"  {send ".quit\r"}
    }
Vsechno funguje az do okamziku, kdy se ma zacit vykonavat posledni prikaz expect. Tady ma skript zjistit jestli je soubor /tmp/script/address pritomen. A to podle vypisu. Pokud ano vypise se hlaska
/tmp/script/address
. Pokud ne, vypise se
ls: /tmp/script/address: No such file or directory
. Potiz je v tom, ze posledni expect se nevykona. S nejvetsi pravdepodobnosti je spatne syntaxe, ale nejsem schopen nikde najit relevantni priklad, ktery by mi pomohl. Pro uplnost pouzivam Expect version 5.38.0. Dekuji za radu.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.5.2006 19:42 oron | skóre: 27
Rozbalit Rozbalit vše Re: Expect a vetveni podle vystupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
expect {
    "directory"  {send "reboot\r";exp_continue}
    "address"  {send ".quit\r"}
    }
nema to byt takto
expect {
    "directory"  {puts reboot\r;exp_continue}
    "address"  {puts quit\r}
    }
teda nie send ale puts a asi bez uvodzoviek
viacej tu
http://www.manualy.sk/seminar/Papers98/expect/ ja by som potreboval vediet ako poslat stlacenie enter alebo space ...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.