você tentou rodar isso via echo da senha no shell?
echo "echo 'yourpassword'; sudo -S -c 'ls -l /root'"|pssh -I -H hostlist.txt
Linux: ubuntu 14.04.3 LTS
cat /tmp/passfile
ABCxyz123
sshpass -f /tmp/passfile parallel-ssh -I -A -h hostlist.txt "sudo -S ls -l /root" < /tmp/passfile
e o método descrito aqui no google discussion groups.google gera o erro como:
[1] 01:07:25 [FAILURE] 10.0.4.194 Exited with error code 255
[2] 01:07:25 [FAILURE] 10.0.4.205 Exited with error code 255
no servidor remoto estou tentando conectar seu /var/log/auth.log abaixo da mensagem
Sep 24 19:20:52 ubu1401 sshd[5765]: Accepted password for ubuntu from 10.0.4.1 port 55019 ssh2
Sep 24 19:20:52 ubu1401 sshd[5765]: pam_unix(sshd:session): session opened for user ubuntu by (uid=0)
Sep 24 19:21:26 ubu1401 sshd[5765]: pam_unix(sshd:session): session closed for user ubuntu
Sep 24 19:21:26 ubu1401 sudo: pam_unix(sudo:auth): conversation failed
Sep 24 19:21:26 ubu1401 sudo: pam_unix(sudo:auth): auth could not identify password for [ubuntu]
Sep 24 19:22:25 ubu1401 sshd[5791]: Connection closed by 10.0.4.1 [preauth]
você tentou rodar isso via echo da senha no shell?
echo "echo 'yourpassword'; sudo -S -c 'ls -l /root'"|pssh -I -H hostlist.txt
Para fornecer a senha o mais segura possível, tente esta versão ( pssh
no CentOS, Fedora e parallel-ssh
no Ubuntu, Debian):
stty -echo; printf "Password: "; read PWD; stty echo; echo "${PWD}" | \
ssh <USER>@localhost "sudo -S dmesg"
e depois adaptá-lo para pssh assim:
stty -echo; printf "Password: "; read PWD; stty echo; echo "${PWD}" | \
pssh -H <USER>@localhost -o /tmp/output -I "sudo -S dmesg"
Eu uso o mesmo para uma coleção ad-hoc de despejos de vários servidores. Pare-o usando Ctrl + C como de costume. Ele mostrará [FAILURE] <HOST> Interrupted
, mas isso é apenas porque o tcpdump seria executado infinitamente - a saída ainda está no local usual. A opção -t 0
é para que a conexão não expire. Eu também poderia usar o tmux ou screen e coletar os dumps depois.
stty -echo; printf "Password: "; read PWD; stty echo; echo "${PWD}" | \
pssh -h <HOSTFILE> -o /tmp/output -t 0 -I "sudo -S tcpdump -l -nn -vv -i any not port 22"
Certifique-se de incluir o usuário ssh correto e de que você se conectou a esses servidores antes. Testar as coisas localmente geralmente evita derrubar toda a frota de servidores. Você pode usar os endereços 127.0.0.X em vez de localhost para aproximar vários hosts.
Tags ssh linux ubuntu parallel-ssh