Bona tarda Salvador,
Un script com aquest et podria servir:
#!/bin/bash
USUARI="root"
CONTRASENYA="_CONTRASENYA_"
XARXA="192.168.0.0/24"
for IP in $(nmap -p 22 -n $XARXA --open |grep -i interesting | awk -F ' ' '{print }' | cut -d ":" -f1); do
#
# Aqui heu d'introduir l'ordre remota que voleu executar
# A l'exemple s'utilitza la connexió a través de clau pública/privada per canviar la contrasenya de root
# definida a la variable CONTRASENYA
# Exemple:
#
ssh -o StrictHostKeyChecking=no -o BatchMode=yes $USUARI@$IP "echo -n $CONTRASENYA |passwd --stdin"
#
done
La part final de la línia ssh:
echo -n $CONTRASENYA |passwd --stdin
És un exemple per executar una ordre remota, en aquest cas un canvi de contrasenya d'usuari.
Si canvies aquesta ordre que s'executa en remot per:
tindràs el tancament dels equips.
Ara bé, cal distribuir claus públiques ssh entre les màquines i instal·lar el servidor ssh.
#!/bin/bash
USUARI="root"
CONTRASENYA="_CONTRASENYA_"
XARXA="192.168.0.0/24"
for IP in $(nmap -p 22 -n $XARXA --open |grep -i interesting | awk -F ' ' '{print }' | cut -d ":" -f1); do
expect -c "
spawn ssh -o StrictHostKeyChecking=no $USUARI@$IP \"mkdir .ssh\"
match_max 100000
expect \"*?assword:*\"
send -- \"$CONTRASENYA\r\"
send -- \"\r\"
expect eof
"
expect -c "
spawn scp -o StrictHostKeyChecking=no "$HOME/.ssh/id_rsa.pub" $USUARI@$IP:\"$HOME/.ssh/authorized_keys\"
match_max 100000
expect \"*?assword:*\"
send -- \"$CONTRASENYA\r\"
send -- \"\r\"
expect eof
"
done
# nmap -p 22 -n $IP --open
# Nota: existeix el paquet pssh per treballar en paral·lel (software.opensuse.org)
# La comanda és: pssh -A -h nom_ip.maquina -O StrictHostKeyChecking=no "nom comanda"
Aquest altre script permet distribuir una clau pública entre els diferents ordinadors de la xarxa.
Aquí caldrà revisar l'adreça de la xarxa (192.168.0.0/24) i posar l'adreçament que correspongui (segons si és xarxa de cable o bé wifi).
Bé fes una prova i em dius com ha anat.
Merci,
Joan