1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Bash-Script und Crontab

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von Turkey1976, 14.08.07.

  1. Turkey1976

    Turkey1976 Freiherr von Berlepsch

    Dabei seit:
    03.07.07
    Beiträge:
    1.102
    Hallo liebe Damen und Herrn,

    ich habe folgendes Problem an dem ich mir die Zähne ausbeiße. Ich habe ein MacBook mit 10.4.10

    -ein gut funktionierendes Bash-Script, dass mir ein SMB-Laufwerk am Macbook mountet, wenn der entsprechende Server online ist und das Laufwerk ohnehin noch nicht gemountet ist.
    Wenn ich es im Terminal mit /Automatisierung/meinschript.sh aufrufe, funktioniert es einwandfrei. Es sieht so aus:

    #!/bin/bash
    echo "Start" > /Automatiserung/log
    if (ping -c 1 -n 192.168.0.23 > /dev/null 2>&1) ; then
    mount >/Automatisierung/mytemp;
    if (grep 192.168.0.23 /Automatisierung/mytemp > /dev/null); then
    echo laufwerk schon eingebunden
    else
    mount_smbfs //user:pasword@192.168.0.23/q /Netzwerk_HD/
    echo laufwerk jetzt eingebunden
    fi
    else
    ping -c 1 -n 192.168.0.23;
    echo rechner nicht erreichbar
    fi
    rm /Automatisierung/mytemp

    Wenn ich das ganze per crontab periodisch starten möchte, passiert nix. Der Eintrag in der Crontab (von root) lautet:

    */1 * * * * /Automatiserung/meinschript.sh

    Das Script wird zwar gestartet und das Echo-Kommando ausgeführt, aber der Ping liefert keinen Rückgabewert.

    Weiß jemand Rat? Warum läuft das Script im Terminal gut und über die Crontab nicht?

    Gruß Heiko
     
  2. Dr.Apfelkern

    Dr.Apfelkern Jerseymac

    Dabei seit:
    18.04.07
    Beiträge:
    454
    Es ist, weil das Script als Funktion "Ping" zu Grunde legt. Es gibt aber leider mindestens 2 Hände voll andere Möglichkeiten warum ein Server im Netzwerk nicht gefunden werden kann. Ich denke "Ping" kann hier nur direkt aufgerufen werden und nicht durch einen Cronjob.
     
  3. Turkey1976

    Turkey1976 Freiherr von Berlepsch

    Dabei seit:
    03.07.07
    Beiträge:
    1.102
    Sowas ähnliches habe ich seinerzeit unter SUSE10 implementiert, da gabs keine Probleme. Ich bin halt ein BSD/MacOS Neuling und bin entsprechend unsicher.

    Zum Problem, der o.g. Server ist definitv online und läßt sich pingen. Ausserdem ist Echo doch auch eine Funktion genau wie Ping.
     
  4. Turkey1976

    Turkey1976 Freiherr von Berlepsch

    Dabei seit:
    03.07.07
    Beiträge:
    1.102
    Grubenunglück du hattest recht! Inspirierend!

    Ping kann nicht direkt aufgerufen werden, weil es /sbin liegt. das bash script sucht wohl standardmäßig nur in /bin. Jetzt läufts.

    Ich habe das Script jetzt demensprechend geändert:

    #!/bin/bash
    if (/sbin/ping -c 1 -n 192.168.0.23 > /dev/null 2>&1) ; then
    /sbin/mount >/Automatisierung/mytemp;
    if (/usr/bin/grep 192.168.0.23 /Automatisierung/mytemp > /dev/null); then
    echo laufwerk schon eingebunden
    else
    /sbin/mount_smbfs //user:password@192.168.0.23/q /Netzwerk_HD/
    echo laufwerk jetzt eingebunden
    fi
    else
    echo rechner nicht erreichbar
    fi
    rm /Automatisierung/mytemp

     

Diese Seite empfehlen