<HTML>Hi,
also ich will folgende Zeile in Crontab hinzufuegen (crontab -e [als Editor ist Joe's Own Editor eingestellt])
0,30 * * * * root ping -c 1 195.3.96.67 >/dev/null || /etc/init.d/adsl restart
ok eigentlich sieht das semantisch ja voellig okay aus. Wenn ich die Zeile ab ping in die shell schreibe: ping -c 1 195.3.96.67 >/dev/null || echo "test" dann schreibt er kein test hin.
Trotzdem komischerweise wird alle halbe stunde meine Verbindung neu aufgebaut.
Ich hab dann auch in der ping manpage nachgeguckt. Da steht dann dass ping bei error exit code 2 returnt. Wenn keine pakete empfangen wurden code 1 und sonst code 0.
Dann muesste er aber bei
ping -c 1 195.3.96.67 >/dev/null || echo "test"
schon ein test hinschreiben. Weil die Verbindung steht. Also ist der code 0. und bei 0 und einem logischen oder wird doch der 2. Ausdruck auch noch überprüft. Wäre es aber eins, dann würde der 2. Ausdruck nicht mehr überprüft weil der könnte ja sowieso nichts mehr an der Richtigkeit dieses Ausdrucks ändern.
Sehr komisch ist das.
Ich probier mal was passiert wenn ich in crontab schreibe:
0,30 * * * * root ! ping -c 1 195.3.96.67 >/dev/null || /etc/init.d/adsl restart
Trotzdem bedarf es hier einer Erklärung. Ach ja ich verwende Debian Potato (2.2r3)
mfg,
ata</HTML>