Expect script e troubleshooting

Potrebbe succedere che uno shell scrip che fa pesantemente uso di expect vi si pianti senza alcun motivo apparente. Potrebbe anche succedere che passiate delle ore a cercare di capire dove sta l’inghippo senza ottenere risultati.

expect.png

Ecco allora che ci possono tornare utili alcuni piccoli magheggi da applicare al nostro scrip (causa di n-mila imprecazioni).

Il primo consiste nell’abilitare l’output dei comandi lanciati da expect. Per fare ciò è sufficente aggiungere exp_internal 1 allo scrip . Un esempio di output è il seguente:

parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {22098}

expect: does "" (spawn_id exp6) match glob pattern "*?assword:*"? no

Inoltre (e sto parlando del secondo magheggio), posso garantirvi che nel 90% dei casi lo scrip fallisce a causa del timeout di expect. Per definire manualmente tale parametro basta inserire la seguente direttiva all’interno dello scrip:

set timeout <numero di secondi>

Ciò è necessario soprattutto se i comandi lanciati richiedono parecchio tempo per essere eseguiti (vedi dump di un database e copia dello stesso su una macchina remota).

Fine del post, fatene buon uso.

Expect script e troubleshootingultima modifica: 2012-05-21T11:21:00+02:00da nazarenolatella
Reposta per primo quest’articolo