Script per spegnere la macchina quando manca corrente

Visto che il software allegato all’ ups usa tomcat ed è pesantissimo ho deciso di scrivere un piccolo script per spegnere la macchimna quando il router non è presente, perchè non alimentato dall’ ups.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash
while true
do
spegni=0
#tempo fra un ping e l'altro
sleep 60
    
# numero di tentativi se il ping fallisce 
   
 while [ "$spegni" -le "3" ]
    do
#indirizzo ip del router
    
        if ping -c 1 192.168.1.1 1>/dev/null 2>&1
        
        then
        break
        
        else
        
        spegni=$[$spegni+1]
#tempo fra i tentativi
        sleep 4
        
        fi
    done   
    if (( "$spegni" > 3 ))
    then
    xmessage -timeout 5 -center -buttons spegni,continua Spegnere?
    
    if [ "$?" -le "101" ]
    then
    xmessage -center spegnimento &
    dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
        /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
            
    fi   
    fi
done

 

Questo script fa un ping ogni 60 secondi al router, se non risponde ritenta 2 volte distanziate 4 secondi, se non riceve risposta visualizza una finestra che chiede se spegnere la macchina o continuare a tenerla accesa.
Se non viene premuto il tasto per mantenerla accesa entro 5 secondi, la macchina inizia il processo di spegnimento.

Lo script può essere fatto partire come utente, non è necessario essere root.