Giuseppe Parrello

 

Come pianificare attività su un Router


Introduzione

Su un sistema operativo Linux, le attività vengono pianificate usando il cosiddetto servizio "cron", con questo servizio è possibile eseguire attività "cron".
Le attività "cron" permettono agli utenti di Linux di eseguire comandi o script ad una specifica data/ora. Ad esempio è possibile pianificare script da eseguire periodicamente.
Le attività "cron" sono uno dei più utili strumenti di Linux. Il servizio (daemon) "cron" viene eseguito in secondo piano e costantemente controlla la presenza dei file "crontab" all'interno del sistema operativo.


Come gestire le attività "cron"

Per gestire le attività "cron" su un Router (Asus RT-AC86U) si usa il comando "cru", questo comando aggiunge, elimina ed elenca le attività "cron".
Il comando "cru" in realtà è uno script e semplicemente gestisce il file "crontab" presente nella cartella "/var/spool/cron/crontabs" - il nome del file "crontab" in realtà è chiamato "admin" poiché "admin" è l'utente principale con i più alti privilegi all'interno del router.


Il comando "cru"

Questo è un esempio dello script "cru" all'interno di un router:

#!/bin/sh
D="/var/spool/cron/crontabs"
U="$D/cron.update"
F="$D/`nvram get http_username`"
N="$F.new"
L="/var/lock/cron.lock"

if [ $# -gt 1 -a "$1" = "a" -o "$1" = "d" ]; then
        if [ -f $L ];
        then
                I=$((($$ % 25) + 5))
                while ! rm $L 2>/dev/null; do
                        I=$(($I - 1))
                        [ $I -lt 0 ] && break
                        sleep 1
                done
        fi

        ID=$2
        grep -v "#$ID#\$" $F >$N 2>/dev/null
        if [ "$1" = "a" ]; then
                shift
                shift
                echo "$* #$ID#" >>$N
        fi
        mv $N $F
        echo `nvram get http_username` >>$U

        echo >$L
        exit 0
fi

if [ "$1" = "l" ]; then
        cat $F 2>/dev/null
        exit 0
fi

cat <<END

Cron Utility
add:    cru a <unique id> <"min hour day month week command">
delete: cru d <unique id>
list:   cru l

END
exit 0

Questo invece è un esempio della guida del comando "cru":

Cron Utility
add: cru a <unique id> <"min hour day month week command">
delete: cru d <unique id>
list: cru l

Il primo parametro "unique id" contiene un ID unico per l'attività "cron".
Il secondo parametro del suddetto comando "cru" segue le stesse indicazioni del "crontab", pertanto avremo:

Esempi del comando "cru"

Per eseguire uno script ogni 5 minuti, useremo il comando "cru" nel seguente modo:

cru a everyfiveminutes "*/5 * * * * sh /opt/etc/myscript.sh"

Per eseguire uno script alle 4:00 di mattina ogni giorno:

cru a backupscript " 0 4 * * * sh /opt/etc/myscripts/backup_script.sh"

Per eseguire uno script alle 4:00 di mattina ma solo nei giorni di domenica e di mercoledì:

cru a backupscript " 0 4 * * 0,3 sh /opt/etc/myscripts/backup_script.sh"