Eu uso molly-guard
em todas as minhas máquinas, mas às vezes quero ssh em uma máquina e executar um script que, como etapa final, deve reinicializar essa máquina, mas há o problema que aparece molly-guard
e solicita o nome do host.
Estou procurando algo como o --molly-guard-do-nothing
sinalizador, mas ao invés de não fazer nada seria chamado --molly-guard-do-not-ask
e não pediria confirmação.
A página de manual não tem informações sobre isso, então gostaria de saber se há uma solução alternativa.
Eu só preciso que isso funcione quando eu tiver ssh'd na máquina; isto é, nunca seria necessário no contexto de um cronjob ou algo assim, mas eu não me importaria se funcionasse também.
Para ser mais específico, este é o script em questão:
sudo apt-get update && apt list --upgradable
echo ""
echo "---- ok. what next? ----"
echo ""
read -n 1 -p "exit or upgrade? (E/u) " ans;
case $ans in
u|U) printf "\n\nok, invoking 'sudo apt-get upgrade'\n\n"; sudo apt-get upgrade;;
*) printf "\nok, exited\n\n"; exit;;
esac
echo ""
echo "---- ok. what next? ----"
echo ""
read -n 1 -p "exit, autoremove or reboot? (E/a/r) " ans;
case $ans in
a|A) printf "\n\nok, invoking 'sudo apt-get autoremove'\n\n"; sudo apt-get autoremove;;
r|R) printf "\n\nok, invoking 'sudo reboot'\n\n"; sudo reboot;;
*) printf "\nok, exited\n\n"; exit;;
esac
echo ""
echo "---- ok. what next? ----"
echo ""
read -n 1 -p "exit or reboot? (E/r) " ans;
case $ans in
r|R) printf "\n\nok, invoking 'sudo reboot'\n\n"; sudo reboot;;
*) printf "\nok, exited\n\n"; exit;;
esac
Por padrão
molly-guard
, apenas solicita um nome de host se achar que está em um login SSH interativo. Ele determina o status "interativo" verificando se seu fluxo de entrada padrão está conectado a algo que se comporta como um terminal. (Especificamente, seu30-query-hostname
subscript faztest -t 0 || exit 0
antes de chegar ao código que emite o prompt.)Você pode forçar a falha desse teste executando seu script com sua entrada padrão redirecionada de algo que não é um terminal.
/dev/null
seria a escolha convencional, algo como:Se seu script precisar receber entrada do terminal antes de acionar a reinicialização e, portanto, você não puder executar o script com seu stdin redirecionado, poderá modificar o script para redirecionar stdin apenas para o
reboot
comando. Talvez até dê ao seu script uma opção que diga se deve fazer o redirecionamento emreboot
, para que por padrão ele ainda esteja sujeito àmolly-guard
intervenção de .