Shutdown des del servidor

Vull programar shutdown (i si pogués inici automàtic també) per a totes les màquines del centre. Tinc l'opció d'afegir una ordre shutdown al cron.tab de cada màquina però voldria saber si puc gestionar tot el grup de màquines amb alguna aplicació des del servidor (Linkat 18.04) a l'estil del DreepFreezer.
Bona tarda Salvador.

Bé, el tancament remot d'equips l'hauries d'efectuar a través de SSH (o PSSH que és una connexió ssh en paral·lel).

Els equips haurien de tenir el servei ssh activat i amb la clau ssh pública afegida. D'aquesta forma pots executar una ordre del tipus:

ssh usuari@ip "ordre remota de l'equip"

A l'ordre remota de l'equip podries executar aquesta:

/sbin/shutdown -h now

Per saber quines IPs estan actives, podries fer servir l'ordre nmap -sP RANG_XARXA

Aquest script s'executaria des del servidor cap a cadascuna de les màquines que detectis que estan obertes (sobretot per estalviar electricitat).

Si vols m'escrius un correu a veure si podem filar més prim amb la solució.

:-)


Joan
Bona tarda Salvador,

Un script com aquest et podria servir:

Code

#!/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:

Code

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:

Code

/sbin/shutdown -h now


tindràs el tancament dels equips.

Ara bé, cal distribuir claus públiques ssh entre les màquines i instal·lar el servidor ssh.

Code

#!/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