Poderia ser via ssh com chaves + script, dessa forma, não precisaria digitar a senha para acesso via ssh e não usaria o sudo, pois a conexão aos terminais seria feito com o usuário de root, que pode rodar o comando shutdown. Existe também alguma restrição ao root? Continuando...
1 - Instale o servidor ssh nos 20 micros: apt-get install openssh-server ou baixe o pacote.
2 - No seu terminal, como root, crie as chaves de acesso com os comandos:
ssh-keygen -b 4096 -t rsa
Será solicitado onde deve ser salva a chave, digite /root/.ssh/id_rsa caso esteja indicando outro diretorio.
Em seguida, será pedido para definir o passphrase, Não Defina, Apenas pressione ENTER.
Será solicitado para confirmar o passphrase, Pressione ENTER novamente.
Pronto, chaves criadas,
3 - Agora, a partir do seu terminal, é preciso dar dois comandos para cada um dos 20 micros.
scp /root/.ssh/id_rsa.pub root@IP:/root/.ssh/
ssh root@IP "cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys"
ps: Não é o caso, mas em algumas distros, não existe a pasta .ssh dentro de root mesmo com o servidor
Agora, do seu micro, basta dar um ssh root@IP que você acessa via ssh todos os micros da sua rede.
Agora é facil criar um script, ex:
#! /bin/bash
ip=1
endip=20
until [ $ip -gt $endip ]; do
ssh root@192.168.1.$ip "shutdown -h now"
ip=`expr $ip + 1`
done
Basta rodar o script que todos os micros do ip 192.168.1.1 ao 192.168.1.20 vão desligar.
Se tiver algum micro fora da rede ou desligado e quiser agilizar a velocidade do script, mude a linha do shutdown para
ssh -o ConnectTimeout=4 root@192.168.1.$ip "shutdown -h now"
Se em 4 segundos o micro não responder, ele passa pro proximo micro.
Dessa forma foi contornado o problema do "sudo", não é usado.
O comando shutdown é dado pelo root da propria maquina, não pelo root da sua maquina, contornado o problema de administração.
Esse, acho que é o jeio fácil, a menos que alguma outra coisa atrapalhe.