Sie sind nicht angemeldet.

Anzeigen

**Wir werden in den kommenden Tagen einen Umzug auf einen neuen Server durchführen. Im Rahmen dieser Maßnahme wird das Forum ca. 1 Stunde nicht erreichbar sein.** nslu2-info.de ist ein privates Projekt von mir, welches jeden Monat aus eigener Tasche finanziert wird. Mit einer freiwilligen Spende wird der Erhalt und der weitere Ausbau dieses Forums unterstützt. Um mich beim Erhalt des Forums zu unterstützen, kannst Du entweder via Flattr oder Paypal spenden. Ich bedanke mich schon jetzt bei allen Unterstützern.

Lieber Besucher, herzlich willkommen bei: Die NSLU2 Community****wenns ums speichern und streamen geht****. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

gznw

Fortgeschrittener

  • »gznw« ist der Autor dieses Themas

Beiträge: 158

Firmwareversion / your current Firmware: Unslung 3.18

  • Nachricht senden

1

Donnerstag, 19. März 2009, 11:38

Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Hallo.
Ich habe ein kleines Problme mit der Ausführung eines kleinen Skripts per cron.. Ich habe folgende Zeilen als Skript angelegt:

wget --tries=2 --timeout=5 --spider -N -nv http://user:kennwort@192.168.2.3/snapshot.cgi
if [ ! $? -eq 0 ]; then
/camneu
fi


Wenn die Datei snapshot.cgi nicht heruntergeladen werden kann, dann soll das Skript /camneu ausgeführt werden..
Wenn ich das ganze nun von Hand ausführe, klappt es wunderbar ohne Probleme für beide Fälle. Das ganze soll aber per cron alle 2 Minuten ausgeführt werden. Das Aufrufen klappt, aber die Ausführung des Skriptes nicht! Es wird nämlich grundätzlich das Skript /camneu auch ausgeführt, egal was mit der if-Bedingung ist!!
Ich werde echt noch verrückt!
Hat jemand eine Ahnung wieso das nicht läuft?? Hat es etwas mit den Rechten zu tun evtl.???? Ich habe keine Idee mehr..

Anzeigen

MentalFS

Schüler

Beiträge: 71

Verwendetes NAS-Device: NSLU2

Firmwareversion / your current Firmware: Debian

  • Nachricht senden

2

Donnerstag, 19. März 2009, 13:00

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Wget scheint ja dann jedes Mal einen Fehler zurückzugeben. Ich kann jetzt nicht direkt sehen, wieso das so sein sollte, aber vielleicht kannst du den Fehler besser finden, wenn du im cron-aufruf dir die Ausgabe in eine Datei wegschreiben lässt, also mit > /home/gznw/cron.log oder so.

Anzeigen

gznw

Fortgeschrittener

  • »gznw« ist der Autor dieses Themas

Beiträge: 158

Firmwareversion / your current Firmware: Unslung 3.18

  • Nachricht senden

3

Donnerstag, 19. März 2009, 13:32

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Hallo.
Ja, also die Idee ist nicht schelcht.. Aber das Problem ist, daß ich die Meldung nicht so umgeleitet bekomme.. keien Ahnung, weshalb, aber mit > /logdatei.log klappt es nicht. Da gibt es keine ausgabe.. Weißt Du, wie ich die Ausgabe in die Datei hinbekomme?

MentalFS

Schüler

Beiträge: 71

Verwendetes NAS-Device: NSLU2

Firmwareversion / your current Firmware: Debian

  • Nachricht senden

4

Donnerstag, 19. März 2009, 14:07

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Ich nehme an, dass du im Root-Ordner keine Schreibrechte hast. Das kann u.U. auch ein Problem vom wget sein, da würde dann ein cd /ordner/mit/schreibrechten vorher helfen.

Am besten schreibst du die Datei deswegen in deinen Home-Ordner oder sonstwohin, wo du halt weißt, dass du die entsprechenden Rechte hast (/tmp vielleicht?).

Gilt alles natürlich nicht, falls du den cronjob als root laufen lässt...

BTW ist es generell wohl nicht so "schön" Dateien nach / zu legen...

5

Donnerstag, 19. März 2009, 15:04

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

mir fehlten zudem in cron jobs auch immer sämtliche Umgebungsvariablen die man sonst in seiner bash hat.

Daher diese entweder mit ins script, oder wenn ich mich recht entsinne kann man die auch in die crontab selber schreiben.

gznw

Fortgeschrittener

  • »gznw« ist der Autor dieses Themas

Beiträge: 158

Firmwareversion / your current Firmware: Unslung 3.18

  • Nachricht senden

6

Donnerstag, 19. März 2009, 17:09

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

hmm. was heißt denn das für meinen speziellen Fall? Wie müsste ich denn das umschreiben? Sollte man die Skripte allgemein in einen eigenen Ordner legen statt in / ? Also cron hat, soweit ich weiß root Rechte.. Jedenfalls benutzte ich cron für solche Skripte bereits seit 2 Jahren und solch ei Fehler ist bisher noch nicht aufgetrete, deshalb bin ich so verwirrt..

7

Donnerstag, 19. März 2009, 17:31

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

/home/<user> sollte eigtl. dein platz dafür sein.

prinzipiell bleibt es natürlich dir überlassen. Wenn ich nun unbedingt eine ausführbare Datei nicht im home ordner liegen haben möchte dann bieten sich die verzeichnisse in /usr /opt an.

gznw

Fortgeschrittener

  • »gznw« ist der Autor dieses Themas

Beiträge: 158

Firmwareversion / your current Firmware: Unslung 3.18

  • Nachricht senden

8

Freitag, 20. März 2009, 00:12

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Ist das nur für die Übersichtlichkeit, oder wäre das auch die Lösung für das Problem?? Also ich habe bisher (aus Bequemlichkeit beim Starten) alle Skripte in / gelegt und viele davon werden per cron ausgeführt und laufen perfekt.. Nur eben nicht dieses eine mit wget.. Wäre das Problem dadurch beseitigt wenn ich das Skript in ein anderes Verzeichnis verschieben würde??

MentalFS

Schüler

Beiträge: 71

Verwendetes NAS-Device: NSLU2

Firmwareversion / your current Firmware: Debian

  • Nachricht senden

9

Freitag, 20. März 2009, 09:59

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Ich weiß nicht, wie es mit den anderen Scripts ist, aber das Problem bei diesem könnte sein, dass es eine Datei zu schreiben versucht (eben die mit wget heruntergeladene). Das funktioniert nur als root in /. Du bräuchtest dann aber lediglich das Speicherziel von wget ändern, am einfachsten mit einem cd vorher im Script.

Ob das Script als root ausgeführt wird, kommt darauf an, wie du es anlegst. In der Datei /etc/crontab schreibt man den User ja an jeden Job dran. Benutzt man aber den crontab-Befehl, so wird der Job immer als der User ausgeführt, mit dem man den Job anlegt.

Grundsätzlich findet man es nicht so schön, Sachen in / abzulegen, aber solange man die Rechte dazu hat, ist es kein Problem, und letzten Endes ist es ja dein System und damit kannst du tun und lassen, was du willst :)

gznw

Fortgeschrittener

  • »gznw« ist der Autor dieses Themas

Beiträge: 158

Firmwareversion / your current Firmware: Unslung 3.18

  • Nachricht senden

10

Freitag, 20. März 2009, 11:37

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Naja, also ich habe schon überlegt wegen der Übersichtlichkeit die ganzen Skripte in ein eigenes Verzeichnis zu verschieben.. DAs wird dann wohl bei Gelegenheit gemacht..
Nun habe ich als Test mal in der crontab folgendes eingetragen und es scheint zu laufen:
*/2 * * * * admin /camcheck


also statt root, einfach admin.. Mal schaun ob es nun wirklich läuft, dann wäre das Problem ja gelöst.. Im Internet habe ich nun gesehen, daß das Problem mit cron und wget wohl häufiger auftritt wegen Problemen mit den Rechten.. Also permissions ;)

Ich werde das mal eine Weile beobachten, ob es läuft und wenn ja, dann melde ich mich noch.. Wenn nicht, dann auch :D

Danke erstmal..

gznw

Fortgeschrittener

  • »gznw« ist der Autor dieses Themas

Beiträge: 158

Firmwareversion / your current Firmware: Unslung 3.18

  • Nachricht senden

11

Freitag, 20. März 2009, 15:33

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

hmmmm:mad:!!
Es wäre ja auch zu schön gewesen.. Also den Profiwird es sicher nicht wundern (weil es den Benutzer admin so wohl nicht gibt).. Es klappt leider nicht.. Nun bleibt nur die Frage, wie ich wget per cron laufen lassen kann..
Also es scheint wohl noch eine ander Version von wget zu geben /usr/bin/wget.. aber das unterstützt nicht die nöigen optionen, die ich benötige. Und die Frage ist ja, ob das von cron überhaupt ausgeführt werden kann..
Hat noch jemand eine Idee wie ich das schaffen kann?? Also das muß doch machbar sein!!:confused:

MentalFS

Schüler

Beiträge: 71

Verwendetes NAS-Device: NSLU2

Firmwareversion / your current Firmware: Debian

  • Nachricht senden

12

Freitag, 20. März 2009, 15:51

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Also wenn vorher anstatt admin root stand müsste man ja alle Schreibrechte haben, root darf ja alles... Ich nehme an, du arbeitest sowieso immer als root?

Ich glaube wir sollten nochmal versuchen, eine Fehlermeldung zu bekommen, sonst tappen wir im Dunkeln. wget benutzt ja STDERR für Fehler soweit ich weiß, vielleicht kannst du mal folgendes als Cronjob versuchen (natürlich wieder als root dann):

Quellcode

1
wget --tries=2 --timeout=5 --spider -N -nv http://user:kennwort@192.168.2.3/snapshot.cgi 2> error.log
Pfad für error.log natürlich da wo du es hinwillst.

gznw

Fortgeschrittener

  • »gznw« ist der Autor dieses Themas

Beiträge: 158

Firmwareversion / your current Firmware: Unslung 3.18

  • Nachricht senden

13

Freitag, 20. März 2009, 17:36

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

So, also per Hand aufgerufen wird ausgegeben:

Last-modified header missing -- time-stamps turned off.

Das ist aber ok, denke ich.. Das kommt ja von den Optionen, daß er nur neuere Dateien herunterladen soll, aber dann auch wieder nicht herunterladen soll.. Das muß ich dann auch noch einmal ändern.. Das ist ja doppelt/überflüssig.

Soo und per cron ausgeführt erscheint folgendes:
------------------------------------------
wget: unrecognized option `--tries=2'
BusyBox v1.00 (2006.04.11-01:22+0000) multi-call binary

Usage: wget [-c|--continue] [-q|--quiet] [-O|--output-document file]
[--header 'header: value'] [-Y|--proxy on/off] [-P DIR] url

wget retrieves files via HTTP or FTP

Options:
-c continue retrieval of aborted transfers
-q quiet mode - do not print
-P Set directory prefix to DIR
-O save to filename ('-' for stdout)
-Y use proxy ('on' or 'off')

------------------------------------------------


Ja, und da fällt mir ein, daß das ausgegeben wird, wenn man /usr/bin/wget benutzt (gut, daß ich das vorhin mal gemacht habe, sonst wäre ich ganz verdutzt). Das scheint eine andere Version zu sein, die diese Optionen nicht kennt..

Also scheint das Problem wohl darin zu liegen, daß der Pfad zu wget (die Version, die ich haben will) anders sein muß, richtig??

Das ist ja schon mal ein Ansatz! Fragt sich nur wie denn der Pfad aus der Sicht von Cron ist. Ich gebe z.B. in der shell einfach wget ein...

caplink811

Forensupporter

Beiträge: 2 200

Verwendetes NAS-Device: 64X2/8GB/Ubuntu10.04LTS

Firmwareversion / your current Firmware: anderes

Wohnort: Berlin

Beruf: TK/IT Consulting and Engineering

  • Nachricht senden

14

Freitag, 20. März 2009, 19:57

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Moin,

der Pfad ist immer gleich, aus der Sicht vom crond wie auch aus Deiner, wie schon so oft geschrieben, benutze explizit die Shell mit der Du testest, und rufe Programme absolut, oder passt die Suchpfade entsprechend an, und vermerke das im /etc/profile (oder was auch immer Deine Shell verlangt).

bye
JrB

PS: ein Teil der o.g. Subjekte eignen sich als Suchbegriffe hier im Forum
"Supporting joe users worldwide" <- that's our motto


MentalFS

Schüler

Beiträge: 71

Verwendetes NAS-Device: NSLU2

Firmwareversion / your current Firmware: Debian

  • Nachricht senden

15

Samstag, 21. März 2009, 00:55

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Wenn du normal in der Shell bist kannst du mal which wget machen.

gznw

Fortgeschrittener

  • »gznw« ist der Autor dieses Themas

Beiträge: 158

Firmwareversion / your current Firmware: Unslung 3.18

  • Nachricht senden

16

Samstag, 21. März 2009, 06:36

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Zitat

der Pfad ist immer gleich, aus der Sicht vom crond wie auch aus Deiner, wie schon so oft geschrieben, benutze explizit die Shell mit der Du testest, und rufe Programme absolut,


Ja.. nun weiß ich was das Problem war.. Nur wegen Faulheit :o.. Am Anfang habe ich bei allen Programmen immer /opt/bin/... eingegeben (bzw. den richtigen Pfad) und dann habe ich mal festgestellt, daß das ja "überflüssig" ist und ich habe seitdem den Pfad immer weggelassen und alle Programme konsequent direkt aufgerufen.. Das hat sich wohl nun gerächt.. Ich habe ganz vergessen, daß es ja diese "/opt/bin/"-Geschichte noch gibt...


Und danke für das "which wget"!!! Nun weiß ich wieder, daß es in /opt/bin/ liegt!!


Vielen Dank für die Hilfe... Nun geh ich erstmal schlafen und nachher guck ich mal, ob es bis dahin erfolgreich gelaufen ist.


P.S.: Wieso geht denn das überhaupt ohne /opt/bin/ ?? Also wenn man das per Hand eingibt?

MentalFS

Schüler

Beiträge: 71

Verwendetes NAS-Device: NSLU2

Firmwareversion / your current Firmware: Debian

  • Nachricht senden

17

Samstag, 21. März 2009, 15:34

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

Bei unslung bin ich auf unbekanntem Terrain aber soweit ich weiß benutzt es Busybox. Das bringt ja ein eigenes wget mit, ein ls -lh /usr/bin/wget müsste es auch als Symbolic Link dahin anzeigen. Das hat aber wohl weniger Features. Und bei Cronjobs ist die PATH-Variable halt nicht so gesetzt, wie wenn du dich einloggst, beim Einloggen wird nämlich immer ein Login-Script ausgeführt (zumindest bei Bash, ich weiß nicht ob Unslung Bash als Standard benutzt).

gznw

Fortgeschrittener

  • »gznw« ist der Autor dieses Themas

Beiträge: 158

Firmwareversion / your current Firmware: Unslung 3.18

  • Nachricht senden

18

Samstag, 21. März 2009, 20:34

AW: Cron-Problem. Skript verhält sich per cron anders als bei manuellem Aufruf

:D Sooo, es läuft!! Das war aber auch ein Akt!!
Jetzt läuft das ganze.. Das ist nun eine Überwachung für eine IP-cam, die sich ab und zu mal aufhängt (heute 2x). Und wenn das Skript hier feststellt, daß kein Stream mehr geliefert wird, wird über USB2seriell-Adapter ein Microcontroller angesteuert, der dann per Mosfet für 3 Sekunden die 12V-Spannungsversorgung unterbricht und die Kamera startet neu..
Als nächstes wollte ich dann auch noch eine Überwachung für 2 NSLUs einbinden, damit sie völlig eigenständig laufen und im Falle eines Absturzes neugestartet werden.. Da gibt es ja die Möglichkeit eine "start on power on"-Funktion einzubauen (1 Transistor+Widerstand)..


Das mit den unterschiedlichen wget-Versionen habe ich schon bemerkt und mich gewundert, aber nun weiß ich ja bescheid und verwende zukünftig immer den vollen Pfad. ;)
Ich bin ja ganz froh, daß ich mittlerweile relativ gut mit unslung zurechtkomme, jedenfalls mit den Sachen, die ich mache. Aber es gibt echt viele viele Sachen, die noch unbekannt sind.. Gut, daß es das Forum hier gibt.. Also nochmal danke schön!!

gznw

//Edit: Falls jemand das gleiche Problem hat mit wget per cron, hier ist das fertige kleine Skript, um das es ging:

/opt/bin/wget --tries=2 --timeout=5 --spider -N -nv http://benutzer:kennwort@192.168.2.3/snapshot.cgi
if [ ! $? -eq 0 ]; then
/camneu
fi

Social Bookmarks