[Eisfair] dyndnsautologin 1.0.0 released

Olaf Jaehrling eisfair at ojaehrling.de
Sa Jul 27 00:39:19 CEST 2013


Hi Marcus,


--- Original-Nachricht ---
Absender: Marcus Roeckrath
Datum: 25.07.2013 23:16
> Hallo Olaf,
> 

> # Die Addition von 1 zum Random-Ergenis liefert eine Zufallszahl ab 1,
> # spart Dir die Prüfung,ob das Würfeln 0 ergeben hat und ein
> # erneuten Würfeln kann ja wieder 0 liefern, was Du aber dann nicht mehr
> # prüfst.
> # Ich würde hier sogar statt 7 eine größere Bandbreite z. B. 14 oder 20
> # ansetzen, damit es nicht auffällig oft gemacht wird.
> #    MOD=`echo $(($RANDOM % 20 + 1 ))`
>     MOD=`echo $(($RANDOM % 7 + 1 ))`
>     TODAY=`date +%d`
>     MOD=`echo "$MOD + $TODAY" | bc -l`
>     echo $MOD
>     if [ "$MOD " -gt "$TODAY_MAX" ]
>     then
>       MOD=`echo "$MOD - $TODAY_MAX" | bc -l`

Das funktioniert nicht, aber ich habe eine andere Möglichkeit gefunden:

1. MOD=$(($MOD + -27))

Somit kommt dann immer eine Zahl < 10 heraus.

2. Lasse ich die ganze Sache in einer subschleife laufen. Wenn dann
MOD=0 wird die subschleife einfach nochmal aufgerufen:


_cronerzeugung ()
{
    mkdir -p /tmp/DYNAUTOLOGIN_LEER
    cd /tmp/DYNAUTOLOGIN_LEER
    _crony ()
    {
    FIRST=`echo $(($RANDOM % 60))" "$(($RANDOM % 24))`
    MONAT=`date +%m`
    TODAY_MAX=31
    if [ "$MONAT" = "04" -o "$MONAT" = "06" -o "$MONAT" = "09" -o
"$MONAT" = "11" ]
    then
        TODAY_MAX=30
    elif [ "$MONAT" = "02" ]
    then
        TODAY_MAX=28
    fi
    MOD=`echo $(($RANDOM % 7 +1))`
    TODAY=`date +%d`
    MOD=$(($MOD + $TODAY))
    if [ "$MOD" -gt "$TODAY_MAX" ]
    then
        MOD=$(($MOD + -27))
    fi
    if [ "$MOD" = "0" ]
    then
        FIRST=''
        _crony
    fi
    }
    _crony

    DYNDNSAUTOLOGIN_CRON="$FIRST $MOD * *"
    cd - >/dev/null

}

Ich hab das jetzt in verschieden Varianten bestimmt 100 mal durchlaufen
lassen und es kamen immer saubere crontabs heraus.

Gruß

Olaf




Mehr Informationen über die Mailingliste Eisfair