Onlinechanged 7490 freetz-trunk

Sidey

Neuer User
Mitglied seit
15 Jul 2012
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe seit einigen Monaten nun freetz auf meiner 7490.
Ich habe auch den replace-onlinechanged Patch auf der Box.

Ich stelle aber fest, dass die in onlinechanged-cgi hinterlegten Befehle nicht aufgerufen werden.
Auch finde ich keinen ip_watchdog Prozess, wenn die Box bootet.

Ich habe daraufhin, in rc.customs den ip_watchdog manuell gestartet, aber ab und ab stürzt er ab und läuft dann ja doch nicht.


Etwas verwundert bin ich auch über die Scripte
Code:
cat /sbin/ip_watchdog
#!/bin/sh

while true; do
        [ "$IP" ] && IP_OLD="$IP"
        IP="$(/usr/bin/get_ip)"
        [ "$IP" ] && [ "$IP" != "$IP_OLD" ] &&
                IPADDR=$IP /bin/onlinechanged.sh online &
        sleep 60
done

Der ip_Watchdog, sollte ja alle 60 Sekunden Prüfen ob sich die IP-Adresse geändert hat um dann das onlinechanged.sh script aufzurufen.


In meinem Onlinechanged log sieht es in etwa so aus:
Code:
2014-07-22 02:07:19 [2946]: [online] sleeping
2014-07-22 02:07:35 [3465]: [online] waiting
2014-07-22 02:07:35 [2946]: [online] approved
2014-07-22 02:07:35 [2946]: [online] executing /etc/onlinechanged/00-get_ip
2014-07-22 02:07:35 [2946]: [online] executing /etc/onlinechanged/onlinechanged-cgi
2014-07-22 17:07:36 [26397]: [online] killing old process #26400
2014-07-22 17:07:36 [26397]: [online] approved
2014-07-22 17:07:36 [26397]: [online] executing /etc/onlinechanged/00-get_ip
2014-07-22 17:07:37 [26397]: [online] executing /etc/onlinechanged/onlinechanged-cgi
2014-07-22 17:07:43 [26397]: [online]  * % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
2014-07-22 17:07:43 [26397]: [online]  * Dload  Upload   Total   Spent    Left  Speed
100    88    0    88    0     0     45      0 --:--:--  0:00:01 --:--:--    46
2014-07-22 17:07:45 [26397]: [online]  * Updated 2 host(s) sidey.homenet.org, sidey.homenet.org to 84.154.91.99 in 0.291 seconds
2014-07-22 17:07:45 [26397]: [online]  * % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
2014-07-22 17:07:45 [26397]: [online]  * Dload  Upload   Total   Spent    Left  Speed
100    45    0    45    0     0     27      0 --:--:--  0:00:01 --:--:--    27
2014-07-22 17:07:46 [26397]: [online]  * ERROR: Address 84.154.91.99 has not changed.
2014-07-22 17:07:46 [26397]: [online]  * % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
2014-07-22 17:07:46 [26397]: [online]  * Dload  Upload   Total   Spent    Left  Speed
100     7  100     7    0     0      6      0  0:00:01  0:00:01 --:--:--     7
2014-07-22 17:07:48 [26397]: [online] executing /etc/onlinechanged/webdav_net
2014-07-22 17:07:50 [26397]: [online]  * smbd is updating inetd ... inactive.
2014-07-22 17:07:51 [26397]: [online] finished

Um 17 Uhr habe ich den watchdog neu gestartet, da ich merkte, dass er nicht mehr läuft.

In der Inittab steht natürlich, dass er automatisch nachgestartet werden soll:

Code:
::respawn:/sbin/ip_watchdog

Nur das klappt nicht.

Ich bin etwas ratlos, woran das nun liegt.
Derzeit verwende ich die Version 12257M. Das Problem habe ich aber schon seit längerem, also auch mit älteren Firmwareversionen.

Wenn jemand eine Idee hat, würde ich mich sehr freuen.

Grüße Sidey
 
Bist Du sicher, dass ip_watchdog beendet wird? Das Skript sieht nicht so aus, als würde es sich von selbst beendet.
Nach dem Protokoll oben vermute ich eher, dass /etc/onlinechanged/onlinechanged-cgi hängt. Die Alternative wäre, dass gleich drei Prozesse ohne ersichtlichen Grund beendet wurden.

Wenn das Problem häufiger auftritt, kannst Du ip_watchdog mit "stace -f -o Dateiname" aufrufen. Der Dateiname sollte auf einen externen USB Speicher verweisen.
 
Hallo RaldfFriedl,

naja ich denke er ist beendet, wenn ich keinen Prozess /sbin/ip_watchdog mehr sehe.
Ich werde den Watchdog mal mit stace laufen lassen, nur zu blöd dass ich das momemtan nicht im Image hinein kompiliert habe.

Wäre aber auch noch offen, wieso der Watchdog beim booten nicht startet. Bin ich mit dem Fehler alleine?


Grüße Sidey
 
Du brauchst strace nicht im Image zu haben, es reicht, das Programm anderweitig auf die Box zu bringen.

Ist vorher ein Prozess /sbin/ip_watchdog zu sehen? Es ist schließlich ein Shell Skript.

Hast Du etwas in rc.custom oder debug.cfg, was deren Beendigung verhindert?
 
Tagchen

Kann sein, dass ich total danebenliege, aber...
Code:
cat /sbin/ip_watchdog
#!/bin/sh

while true; do
        [ "$IP" ] && IP_OLD="$IP"
        IP="$(/usr/bin/get_ip)"
        [ "$IP" ] && [ "$IP" != "$IP_OLD" ] &&
                IPADDR=$IP /bin/onlinechanged.sh online &
        sleep 60
done
...wie kann auf $IP geprüft werden, wenn IP erst in der 2. Zeile definiert wird?
Sind IP und IP_OLD in den Umgebungsvariablen vorhanden?
 
Moinsen,


also zum einen ist ein Prozess (das Shell Script zu sehen), solange das Skript aktiv ist.

23967 root 1200 S {ip_watchdog} /bin/sh /sbin/ip_watchdog

In rc.custom starte ich den ip_watchdog als eigenen Prozess. Da es der letzte Aufruf ist, weiss ich dass mein rc.custom bis da hin kommt.
In meiner debug.cfg habe ich nichts, dafür habe ich ja die rc.custom.

Mir ist heute aufgefallen, dass nicht nur der ip_watchdog von Zeit zu Zeit beendet wird, der smbd lief heute früh auch nicht mehr.
Dass ein hängendes onlinechanged dafür verantwortlich ist, kann ich mir im Moment schwer vorstellen, da aus ip_watchdog das onlinechanged auch als eigener Prozess gestartet wird.
Somit dürfte das nur dazu führen, dass mehrere onlinechanged skript laufen, soweit ich den code in diesem Shellscript verstanden habe, wird das dort aber abgefangen.

Zu dem Code:
Code:
while true; do
        [ "$IP" ] && IP_OLD="$IP"
Hier wird doch zuerst getestet ob $IP true ergibt, also ob die Variable definiert ist. Beim 1. Durchlauf ergibt das false und es wird nur die Variable IP gesetzt. Beim 2. Durchlauf ist $IP gesetzt aber ungleich IP_OLD, was dazu führt, dass onlinechanged ausgeführt wird.

Grüße Sidey
 
In rc.custom starte ich den ip_watchdog als eigenen Prozess. Da es der letzte Aufruf ist, weiss ich dass mein rc.custom bis da hin kommt.
Und wie wird dort ip_watchdog gestartet? Im Hintergrund oder normal?

Hier wird doch zuerst getestet ob $IP true ergibt, also ob die Variable definiert ist.
Konkret wird getestet, ob die Expansion von $IP leer ist oder nicht. Das macht hier keinen Unterschied, aber generell kann eine Variable definiert sein und als Wert trotzdem einen leeren String ergeben.
 
Hallo RalfFriedl,

Also ich habe ein Startscript erstellt, da der Watchdog nicht durch das System gestartet wurde:

/etc/init.d/E71-ipwatchdog
Code:
#! /bin/sh
sh /sbin/ip_watchdog &


Da der Watchdog trotzdem nach dem Booten nicht läuft habe ich dieses Startscript über rc.custom gestartet

rc.custom:
Code:
# Start the IP Watchdog
/etc/init.d/E71-ipwatchdog &


Tia was soll ich sagen, meine Box meinte wohl heute um 7 Uhr mal wieder booten zu müssen und der Watchdog läuft jetzt nicht mehr, da mein DNS Name im Internet stimmt, muss er aber mind. 1x gelaufen sein...

Also habe ich den Aufruf des Watchdogs in meinem rc.custom mal verändert

Code:
/var/media/ftp/uStor01/strace -f -o /var/media/ftp/uStor01/ip-watchdog-strace /etc/init.d/E71-ipwatchdog &

Bin mal gespannt was dabei herauskommt.

Grüße Sidey
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,831
Beiträge
2,219,106
Mitglieder
371,533
Neuestes Mitglied
ipeee
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.