Expect script e troubleshooting

Creato il 21 maggio 2012 da Nightfly

Potrebbe succedere che uno shell script 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.

Ecco allora che ci possono tornare utili alcuni piccoli magheggi da applicare al nostro script (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 script . 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 script fallisce a causa del timeout di expect. Per definire manualmente tale parametro basta inserire la seguente direttiva all'interno dello script:

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.


Potrebbero interessarti anche :

Possono interessarti anche questi articoli :