O $? variável mantém o valor de retorno do último comando. Você poderia fazer isso:
echo "root:passwd" | chpasswd
RET=$?
Ou teste diretamente, por exemplo
echo "root:passwd" | chpasswd
if [ "$?" -ne 0 ]; then
echo "Failed"
fi
Imaging Estou executando o seguinte comando:
echo "root:mypass" | chpasswd
Como posso obter o código de retorno / código de erro retornado pelo chpasswd? Isso é possível neste caso em tudo? Eu tentei
RET = 'echo "root:mypass" | chpasswd'
mas isso me dá apenas "comando não encontrado"?
Se o valor de retorno não for importante, apenas se for bem-sucedido ou não, você poderá usar o comando em uma instrução if
:
if ! echo "root:mypass" | chpasswd; then
# chpasswd failed
fi
Ou o mais curto:
echo "root:mypass" | chpasswd || cmd_to_run_if_chpasswd_failed
Se bem entendi, você está tentando alterar a senha do usuário root usando apenas uma instrução e pressionando Enter sem mais confirmação do processo.
Descobri que sua declaração é executada corretamente se você adicionar um prefixo "sudo su".
~$ sudo su
Considerando que você está tentando mudar a senha do usuário root, é necessário saber qual é o nome do usuário raiz e ser logado corretamente. Você pode fazer isso com o comando sudo su .
Em seguida, basta executar o comando follow substituindo "root" pelo nome da raiz atual e "my pass" pela senha desejada para esse usuário (lembre-se de tomar uma nota para tentar este método):
~$ echo "root:mypass" | chpasswd
Depois de investigar a inserção de um comando exit e do comando login usando a nova senha.
Tags shell shell-script exit