Newsgroup: it.comp.os.linux.sys
Titolo: Reboot automatico VM su Xen

Esiste un modo per automatizzare il reboot di una virtual machine
collassata, tramite XenServer?

 /dev/null
then
	if [ "`/bin/wc -l /var/log/share_server_virtuale_non_accessibile`" ==
"1" ]
	then
		if [ "`/opt/xensource/bin/xe vm-list uuid=UUID | /bin/awk -F":" '/
power-state/ {print $2}'`" == " running" ]
		then
			/bin/date >> /var/lock/server_virtuale_UUID
			/bin/echo "" >> /var/lock/server_virtuale_UUID
			/bin/echo "---" >> /var/lock/server_virtuale_UUID
			/bin/echo "" >> /var/lock/server_virtuale_UUID
			/bin/ps aux >> /var/lock/server_virtuale_UUID
			/opt/xensource/bin/xe vm-reboot uuid=UUID
			/bin/echo "NON RIESCO AD ACCEDERE ALLA CONDIVISIONE PUBBLICA DI
SERVER_TECN" >> /var/log/share_server_virtuale_non_accessibile
		fi
	else
		/bin/echo "NON RIESCO AD ACCEDERE ALLA CONDIVISIONE PUBBLICA DEL
SERVER_VIRTUALE" > /var/log/share_server_virtuale_non_accessibile
	fi
fi
# Se la share non e` accessibile, la VM viene vista come running, ed
e` gia` stata testata due volte e dato un reboot
# normale senza esito, allora viene lanciato un reboot forzato della
VM
#
if ! /usr/bin/smbclient -U backup  \\\\192.168.1.123\\\pubblica
'PASSWORD' -c dir > /dev/null
then
        if [ "`/bin/wc -l /var/log/
share_server_virtuale_non_accessibile`" == "3" ]
        then
                if [ "`/opt/xensource/bin/xe vm-list uuid=UUID | /bin/
awk -F":" '/power-state/ {print $2}'`" == " running" ]
                then
                        /bin/echo UUID >> /var/lock/
server_virtuale_UUID
                        /bin/date >> /var/lock/server_virtuale_UUID
                        /bin/echo "" >> /var/lock/server_virtuale_UUID
                        /bin/echo "---" >> /var/lock/
server_virtuale_UUID
                        /bin/echo "" >> /var/lock/server_virtuale_UUID
                        /bin/ps aux >> /var/lock/server_virtuale_UUID
                        /opt/xensource/bin/xe vm-reboot uuid=UUID
force=true
			/bin/rm -f /var/log/share_server_virtuale_non_accessibile
		fi
	fi
fi

 bello schifo
A parte la formattazione la share testata era sempre la stessa, anche
se in un punto vengono riportati un IP mascherato e nell'altro quello
effettivo.
Poi sarei grato a chiunque abbia consigli su come riuscire a postare
da interfaccia web uno script che appaia formattato com'era stato
scritto.

 wrote:

Manca una un limite temporale, per cui se oggi alle 2 la share non
risulta accessibile per una sola volta, il reboot non viene eseguito,
ma viene registrata la cosa come riga del file /var/log/
share_server_virtuale_non_accessibile, per cui la volta succcessiva
che lo script trovasse la share inaccessibile, magari 17 gg dopo,
comunque farebbe il reboot, cosa a quel punto non desiderata. Quindi
bisognerebbe 
p.es
 registrare in quel file il tempo in formato ISO,
comprensivo di secondi o almeno minuti e usare quel dato la seconda
volta che che la share fosse inaccessibile per fare una differenza di
tempi e se, per dire, e` superiore a 10 minuti, allora sostituire la
riga precedente con i dati dell'ultima inaccessibilita` e non fare il
reboot, mentre se e` inferiore ai 10 minuti dare il reboot.

 comprensivo di secondi o almeno minuti e usare quel dato la seconda
Sembrerebbe una stronzata, almeno il dettaglio del formato ISO, molto
meglio
i secondi dalla dall'inizio di cio` che esiste, 1/1/1970.

 comunque farebbe il reboot, cosa a quel punto non desiderata.
fai molto prima a fare un demone in respawn su inittab.
Pseudo codice:
INTERVAL=600
HOSTNAME="
www.google.it
"
while [ true ]; do
   accessibile=$(ping -c 1 $HOSTNAME | grep -c "1 received")
   if [ $accessibile -lt 1]; then
      let counter=$counter +1;
   fi
   if [ $counter -gt 2]; then echo "AAAARGH! AIUTO!"; fi
   sleep $INTERVAL
done
comunque grazie, la tua idea è ottima, non ho ancora usato il
sistemino perchè son
riuscito a risolvere la cause del freeze, ma in futuro implementerò
una cosa simile.

 done
questo non risolve il problema di fare il reboot solo se i due
fallimenti sono in un intervallo di tempo determinato e abbastanza
breve, pure qui basterebbero 2 fallimenti, anche a distanza di 17 gg
per dare l'allarme e/o far fare il reboot. Per evitare questo devi
anche registrare il momento del fallimento e calcolare la differenza
temporale al momento del successivo, se e` abbastanza breve, fai il
reboot, se e` lunga sostituisci la data/ora del fallimento precedente
con quella dell'ultimo e non fai il reboot.
Inoltre (so che e` solo un esempio) se usi un ping non farei in genere
affidamento sul primo e unico (credo abbia una maggior probabilita` di
fallire senza che per questo la macchina pingata sia inchiodata, a
meno che la pingante e la pingata non siano attaccate direttamente fra
di loro o allo stesso switch (pero` effettivamente nel caso in
questione tutto cio` potrebbe non avere molto senso e andar bene un
singolo ping).

 affidamento sul primo e unico
Era un esempio, il ping va inteso come: metti il super comando che
controlla
se il server è vivo oppure no e che ritorna 1 nel caso fosse vivo, 0
nel caso
fosse morto.

 Tutto imho.
Su questo sono d'accordo e anche se in modo evidentemente poco chiaro
l'avevo scritto.
Il file puo` essere utile se vuoi lasciare un log di quanto fatto ed
eventualmente dello stato del sistema al verificarsi del problema e
poi, almeno nel mio caso, essendo una zappa, come strumento di debug
per capire appunto come non ha funzionato il mio script.