[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