#!/bin/bash # PATHCOMANDO="$(readlink -f "${BASH_SOURCE}")" TRIES="$1" SOGLIA="$2" COMANDO="$3" # testare se $TRIES è un numero if ! [[ "$TRIES" =~ ^[0-9]+$ ]] ; then echo "$1 non è un numero" exit 1 fi # testare se $SOGLIA è un numero if ! [[ "$SOGLIA" =~ ^[0-9]+$ ]] ; then echo "$2 non è un numero" exit 2 fi # $3 deve essere eseguibile, file standard e con path assoluto # per evitare problemi con l'environment di atd if ! [[ -x "$COMANDO" && -f "$COMANDO" && "$COMANDO" =~ ^/ ]] ; then echo "$COMANDO" non è un eseguibile con path assoluto exit 3 fi #occorre verificare separatore tra i decimali in base al locale... TOT=$(uptime | cut -f5 -d: |cut -f1 -d, | cut -f1 -d$(locale decimal_point)) if $TOT -lt "$SOGLIA" ; then #true, tot e' sotto soglia shift shift eval "$@" || { echo "errore durante l'esecuzione di $COMANDO"; exit 1; } ; else { let TRIES-- shift #scartiamo parametro tentativi per reinserirlo modificato echo "$PATHCOMANDO" "$TRIES" "$@" | at now + 2 minutes 2>&1 ; } fi