Como posso capturar a saída de comandos remotos e emitir comandos mais remotos?
-
20-09-2019 - |
Pergunta
Estou executando um script em que ele faz login em um servidor executa o comando "passwd -n 0 -x 99999 -i -1 depuração" para remover o envelhecimento do usuário de depuração. Se a depuração do usuário não estiver presente, eu quero criar a depuração do usuário, alterar a senha e executar o comando acima para o envelhecimento.
Como eu posso fazer?
Atenciosamente, Vasistha
Solução
A partir de perlfunc(1)
:
system LIST [...] The return value is the exit status of the program as returned by the "wait" call. To get the actual exit value, shift right by eight (see below).
Portanto:
my $ret = system(qw/passwd -n 0 -x 99999 -i -1 debug/);
if ($ret != 0) {
# failure handling code here
}
Outras dicas
Usar fantoche.
Se você realmente insiste em fazê -lo manualmente, use getent passwd debug
Para verificar se o usuário existe:
if [ $(getent passwd debug | wc -l ) = 0 ]; then
adduser debug
fi
Eu sugiro usar algo como Espero. Ele lida com a interatividade para você. Você pode fazer login no servidor, executar comandos, inspecionar a saída, enviar mais entrada e assim por diante. Se você estiver fazendo muita administração de servidor remoto, é uma ferramenta muito útil para saber. Existe até um artigo sobre isso em A revisão Perl Edição 4.2 (primavera de 2008)