[Eisfair] dyndnsautologin 0.0.1 released
Marcus Roeckrath
marcus.roeckrath at gmx.de
Fr Jul 12 11:28:34 CEST 2013
Hallo Olaf,
Marcus Roeckrath wrote:
> Meine Überlegung wäre, den cronjob viel häufiger aufzurufen, aber das dann
> ablaufende Script macht den dann zufallsgesteuert meistens nicht; bricht
> also einfach ab.
>
> Damit es dennoch mindestens einmal im Monat aufgerufen wird, müsste man
> den letzten erfolgreichen Login in eine Datei vermerken.
>
> Bei einem erneuten Versuch wird nun zufallsgesteuert entschieden,ob
> eingeloggt werden soll, oder nicht.
>
> Wenn nein, erst noch eine Berechnung der Zeitspanne zwischen jetzigem
> Zeitpunkt und dem letzten Login; wenn das auf 30 zugeht - meinetwegen > 20
> Tage - dann doch einen Login unternehmen.
Hier mal meine Code-Idee; Login zufallsgesteuert aber frühestens nach 10
Tagen und erzwungener Login spätestens nach 20 Tagen.
#!/bin/bash
twentydays=1728000
tendays=864000
lastloginfile=/tmp/dyndns
# Zufallszahl zwischen 0 und 999
randomnumber=$((RANDOM % 1000))
if [ -f $lastloginfile ] ; then
lastlogintime=`date -r $lastloginfile +%s`
now=`date -u +%s`
# Zeitspanne zwischen Jetztzeit und letztem Login
logintimespan=$((now - lastlogintime))
echo $now "." $lastlogintime "." $logintimespan
# Ist Zufallszahl 0
if [ $randomnumber -eq 0 ] ; then
# Login nur wenn mindestens 10 Tage seit letztem Login verstrichen
if [ $logintimespan -gt $tendays ] ; then
touch $lastloginfile
# Hier Login-Code
fi
else
# Zwangslogin, wenn seit letztem Login mehr als 20 Tage vergangen
if [ $logintimespan -gt $twentydays ] ; then
touch $lastloginfile
# Hier Login-Code
fi
fi
else
# Zwangslogin, wenn lastloginfile nicht existiert
touch $lastloginfile
# Hier Login-Code
fi
Das Touchen von lastloginfile sollte man wohl noch vom Erfolg des Logins
abhängig machen.
--
Gruss Marcus
Mehr Informationen über die Mailingliste Eisfair