Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Script funktioniert nicht als Cronjob (nur dann nicht)

  1. #1
    Registrierter Benutzer Avatar von juxreal
    Registriert seit
    May 2015
    Beiträge
    3

    Script funktioniert nicht als Cronjob (nur dann nicht)

    Guten Tag liebe Linux jünger,

    ich habe ein Problem mit einem kleinen Script von mir.

    Wenn ich das Script von Hand starte läuft es gut durch und erkennt zuverlässig ob eine Ip erreichbar ist.

    Wird das Script per crontab ausgeführt, wird immer nur zurück gegeben: keine IP erreichbar

    Ich stehe da ein wenig auf dem Schlauch, da ich überhaupt keine Ahnung habe was das sein könnte.

    Ich bin BASH Anfänger und an Linux habe ich mal gerochen. - reißt euch also bitte mit Abkürzungen zusammen



    ( https://github.com/JuXReal/SmartKey )

    Code:
    #!/bin/sh
    #define the ip of the first device 
     if ping -c 1 192.168.0.107 &> /dev/null 
     then 
    handy1=1 
     echo 1 
     else 
     echo 0 
    fi 
     
     
    #define the ip of the secound device 
    if ping -c 1 192.168.0.109 &> /dev/null 
    then 
    handy2=1 
    echo 1 
    else 
    echo 0 
    fi 
     
     
    #now we calculate the status 
    status=$((handy1 + handy2)) 
    
     
    
     if [ $status -eq 0 ] 
    then 
     
     
    #this will happend if no device were found 
    #example - my securitycam starts to Film the room 
    echo "17=0.2" > /dev/pi-blaster 
    
     
    else 
    #this will happend if one of the both device are online 
    #example - my secrutiycam turn around to face the wall 
    echo "17=0.3" > /dev/pi-blaster 
     fi
    Mein cronjob:

    Code:
    * * * * * cd /home/pi/SmartKey && ./smartkey.sh

    System:

    Debian Whyzee - Raspberry pi
    Geändert von juxreal (11.05.15 um 13:59 Uhr)

  2. #2
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.315
    Eine Möglichkeit ist, dass die Variablen im Cronjob nicht gesetzt sind.

  3. #3
    Codefuzzy Avatar von Efraim
    Registriert seit
    Jun 2010
    Beiträge
    445
    Fehlendes $PATH wird der Klassiker sein. Ein Shebang fehlt auch.

  4. #4
    Registrierter Benutzer Avatar von juxreal
    Registriert seit
    May 2015
    Beiträge
    3
    Zitat Zitat von Efraim Beitrag anzeigen
    Fehlendes $PATH wird der Klassiker sein. Ein Shebang fehlt auch.


    Hallo ihr beiden, vielen Dank für die schnelle Antwort.

    Fehlendes $PATH - welcher Pfad fehlt? Den Fehler verstehe ich nicht (klassiker hin oder her)

    - ich muss aber gestehen, ich komme aus der Windowswelt. Mir ist einfach nicht bekannt das ich da jemals so ein uhriges Problem hatte.

    Ein Shebang fehlt auch

    - ich bin mir gerade nicht sicher ob ich diesen Begriff auf der Arbeit googlen sollte

    Edit: Per Smartphone - #!/bin/sh

    steht bei mir drin, vergessen zu kopieren. Asche über mein Haupt - wurde oben geändert.



    Edit 2: Ah es macht ein Unterschied ob #!/bin/sh oder #!/bin/bash - letzteres funktionert (derzeit wohl besser) - cronjob betrachte ich gerade.

    Gebe mal in 10 Minuten Rückmeldung


    Edit 3: Ahhh, nun scheint es zu funktionieren. Kleiner Fehler große Wirkung! Vielen Dank
    Geändert von juxreal (11.05.15 um 14:44 Uhr)

  5. #5
    Codefuzzy Avatar von Efraim
    Registriert seit
    Jun 2010
    Beiträge
    445
    Zitat Zitat von juxreal Beitrag anzeigen
    Ein Shebang fehlt auch

    - ich bin mir gerade nicht sicher ob ich diesen Begriff auf der Arbeit googlen sollte
    *grunz!* Besser kein boodigo.com auf der Arbeit benutzen.


    /bin/sh ist meist ein Link nach /bin/bash. Aber eben nur meist. Guckst Du:
    Code:
    ls -l /bin/sh
    Debianer z.B., nutzen gerne die dash. Das ist halt eine andere Shell.

  6. #6
    Banned
    Registriert seit
    Feb 2005
    Beiträge
    1.151

    Quark mit Sauce

    In Abhängigkeit des Shebangs ( so nennt sich die erste Zeile), kann die bash in zwei verschiedenen Modi arbeiten.

    Mit dem Shebang #/bin/sh weist man die bash an im POSIXLY_CORRECT Modus zu arbeiten.
    Und somit alle bash Feinheiten und Errungenschaften NICHT zu verwenden.
    Das Konstrukt (( <Integer Mathematik> )) IST ein bash Feature und eben KEIN shell Feature.
    Mit einer Shell müsste man das $(( )) durch entsprechende let Anweisungen ersetzen.

    Also nix mit "funktioniert besser".
    Es funktioniert -wie immer- alles bestens.
    Außer die User.

    Ob man eine Variable PATH setzt, oder nicht, ist egal.
    Man kann jedes Programm/Script mit seinem absoluten Pfad aufrufen.

    Die Environment Variable PATH enthält durch Doppelpunkt getrennte Verzeichnispfade, die durchsucht werden, wenn das gerufene Programm im aktuellen Verzeichnis (cwd == CurrentWorkingDirectory) nicht gefunden werden kann.
    Mit einem absoluten Pfad funktioniert jeder Aufruf.
    /home/luser/irgend/was/MeinScript wird IMMER MeinScript ohne Maulen einfach ausführen.
    Man beachte den "/" an Anfang. DAS ist ein absoluter Pfad.

    ../RiesenLooser/irgend/was/SeinScript ruft mit einem RELATIVEN Pfad SeinScript auf. Ohne je die Variable PATH bemühen zu müssen.
    Unter der Voraussetzung, dass man sich u.B. in /home/luser befindet.
    Ein Punkt bezeichnet das aktuelle Verzeichnis, zwei Punkte bezeichnen das nächsthöhere Verzeichnis zum aktuellen Verzeichnis.

    Ein einfaches Mein Script wird in allen angegebenen Verzeichnisse der Variablen PATH gesucht.
    Ein einfaches ./Mein Script ruft das Script explizit im aktuellen Verzeichnis auf.

    Würde man der Variablen PATH noch ein :. hinzufügen, so würde bei jeder Suche mittels PATH auch das aktuelle Verzeichnis durchsucht werden. ( ":" ist der Trenner zwischen den Pfaden und "." ist das akutelle Verzeichnis)

    P.S. Ein Cron Script sollte man als Shellscript nicht als Bashscript schreiben.
    Und für moderne Systeme sollte man stattdessen systemd lernen und bemühen.
    Geändert von BetterWorld (15.05.15 um 17:31 Uhr) Grund: Eigenen Quark korrigiert. Aufruf von ./somescript

Ähnliche Themen

  1. Cronjob funktioniert nicht mehr
    Von Querbeet im Forum Linux Allgemein
    Antworten: 7
    Letzter Beitrag: 10.12.13, 07:27
  2. Aufruf Cronjob funktioniert nicht
    Von wirseefahrer im Forum Linux Allgemein
    Antworten: 12
    Letzter Beitrag: 12.04.06, 18:42
  3. Cronjob funktioniert nicht
    Von Cerox im Forum System installieren und konfigurieren
    Antworten: 13
    Letzter Beitrag: 24.09.05, 22:47
  4. Cronjob funktioniert nicht
    Von Skuromis im Forum Anwendungen Allgemein, Software
    Antworten: 2
    Letzter Beitrag: 12.08.04, 11:09
  5. Tarbackup script funktioniert als Cronjob nicht
    Von r2k im Forum System installieren und konfigurieren
    Antworten: 2
    Letzter Beitrag: 01.05.04, 11:41

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •