[Eisfair] dyndnsautologin: Nach 3 Tagen neuer Login

Marcus Roeckrath marcus.roeckrath at gmx.de
So Feb 23 18:07:56 CET 2014


Hallo Olaf,

Marcus Roeckrath wrote:

> heute hat dyndnsautologin erfolgreich einen Connect durchgeführt, aber der
> Zeitraum für den nächsten Login ist viel zu kurz berechnet:
> 
> /etc/init.d/dyndnsautologin status
> DynDNSautologin is running
> DynDNSautologin last run: Sun Feb 23 14:38:35 CET 2014
> DynDNSautologin next run at: 26. um 13:16

Ich habe den Bug gefunden und geholfen dabei hat mir ein ähnlicher Fehler in
einen meiner Skripte und er hängt damit zusammen, dass Zahlen mit führender
Null in der Bash oktal interpretiert werden.

Bis 07 ging es also gut, aber 08 ist eben keine oktale Zahl, 09 auch nicht,
bei 10 wird es dann dezimal interpretiert und es gab keinen Fehler mehr.

Hier Beispiele, die das grundsätzliche Problem zeigen:

eis #  echo $((`echo 07` % 4 +1))
4

eis #  echo $((`echo 08` % 4 +1))
-bash: 08: value too great for base (error token is "08")

eis #  echo $((`echo 09` % 4 +1))
-bash: 09: value too great for base (error token is "09")

eis #  echo $((`echo 10` % 4 +1))
3

Klar?

Nun die entscheidende Stelle aus Deinem Code (/etc/init.d/dyndnsautologin
Zeile 57) für die Kommandozeile leicht verändert:

eis #  echo $((`date -d "-12 days ago" +%d`))
7

eis #  echo $((`date -d "-13 days ago" +%d`))
-bash: 08: value too great for base (error token is "08")

eis #  echo $((`date -d "-14 days ago" +%d`))
-bash: 09: value too great for base (error token is "09")

eis #  echo $((`date -d "-15 days ago" +%d`))
10

Nimmst Du statt +%d nun +%e als Formatierung für date geht es:

eis #  echo $((`date -d "-12 days ago" +%e`))
7

eis #  echo $((`date -d "-13 days ago" +%e`))
8

eis #  echo $((`date -d "-14 days ago" +%e`))
9

eis #  echo $((`date -d "-15 days ago" +%e`))
10

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair