Venerdì 19 Novembre 2004 00:00 amministratore 6694 Visite
Stampa
Valutazione attuale: / 2
ScarsoOttimo 
Uno scriptino per far spegnere in automatico il mio gateway casalingo quando spengo la macchina principale.

Da tempo uso per la connessione internet una piccola macchina Linux che mi serve da gateway per la navigazione da casa. In questo modo la macchina é sempre connessa, ospita alcuni servizi che mi servono, e soprattutto non devo preoccuparmi di connettermi quando mi serve connnessione.

L'unico problema é che la notte devo spegnere la macchina, fino a poco tempo fa lo facevo a mano tramite ssh (la suddetta machina é senza monitor, tastiera etc) solo che ogni tanto mi dimenticavo.

Per risolvere la cosa ho messo giù uno script in perl che fa alcuni controlli e se necessario spegne la macchina gateway. Messo nel cron in modo da essere eseguito dopo una determinata ora, fa il suo lavoro alla perfezione da ormai alcune settimane.

Ma veniamo allo script:


#!/usr/bin/perl

# Crontab entry:
# 0-59/5 0-5 * * * /root/pof.pl > /dev/null
# run every 5 minutes from midnight to 5

# CONFIG
my $ping="/bin/ping";
my $grep="/bin/grep";
my $shutdown="/usr/bin/poweroff";
my $pingcount=3; # How many ping?
my $totalcheck=2; # After this number of check poweroff
my $pingdestination="192.168.1.25"; # Which machine to ping
my $writedir="/tmp"; # A dir where we can write

# Touch support file
`touch $writedir/pof.tmp`;

# Try to ping
my $pingres = `$ping -c $pingcount $pingdestination | $grep received`;

# Analyze result
if ($pingres =~ /(d+) packets transmitted, (d+) received, .*/) {
if ($2 == 0) {
$last = `cat $writedir/pof.tmp`;
if ($last) {
$last++;
if ($last > $totalcheck) {
$last=0;
`$shutdown`;
}
}
} else {
$last=0;
}
`echo $last > $writedir/pof.tmp`;
}


In pratica lo script viene chiamato dal cron, effettua un ping verso la mia macchina principale che uso per navigare e controlla il risultato, se la macchina é accessa non fa nulla, se invece la macchina é spenta segnala la cosa e dopo un tot numero di controlli (totalcheck) si spegne da solo.

In questo modo se sono al PC evito che il gateway mi si spenga e ho il tempo per eventuali riavvii, e se mi dimentico di spegnerlo si spegne in automatico dopo una certa ora e dopo un tot di ping a cui non risponde la mia macchina principale.

So che la cosa si poteva fare in modo migliore ma a me basta cosi per ora. :-)
Tags: