amrecover
pretende ser um script interativo, então, tradicionalmente para automatizá-lo, você pode usar expect
. Esse utilitário tcl
pode ser feito para verificar a conversação dos dois estilos de prompt ( amrecover>
e Continue? [Y/n]:
) e responder a eles de maneira diferente. Por exemplo, crie um arquivo myrecover
no seu PATH, torne-o executável ( chmod +x myrecover
) e coloque o seguinte:
#!/usr/bin/expect
spawn amrecover my_Config
expect -ex {Continue? [Y/n]:} { send "y\r"; exp_continue } \
-ex {amrecover>} { gets stdin input;
if ![eof stdin] { send $input; send "\r"; exp_continue } }
close
wait
Em seguida, execute-o como
./myrecover </home/me/thatScript
O script expect
bifurca e executa seu comando amrecover my_Config
, conectando-se a ele por meio de um arquivo e, em seguida, escutando a entrada procurando os dois prompts. Quando o prompt usual amrecover>
é visto, lemos uma linha do stdin do script expect
, ou seja, o seu conjunto de comandos e (se não tivermos o final do arquivo) enviamos essa linha para o programa, com uma nova linha ( \r
é convertido para isso). O exp_continue
faz o loop de comando novamente para a próxima correspondência de prompt. No fim do arquivo, fechamos a conexão com o programa e esperamos que ele saia.
Tenha em atenção que executar amanda
desta forma pode causar estragos se o pedido continuar for para alguma condição excepcional, etc.