• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Bash-Script und Crontab

Turkey1976

Raisin Rouge
Registriert
03.07.07
Beiträge
1.173
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:p[email protected]/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
 

Dr.Apfelkern

Jerseymac
Registriert
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.
 

Turkey1976

Raisin Rouge
Registriert
03.07.07
Beiträge
1.173
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.
 

Turkey1976

Raisin Rouge
Registriert
03.07.07
Beiträge
1.173
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:p[email protected]/q /Netzwerk_HD/
echo laufwerk jetzt eingebunden
fi
else
echo rechner nicht erreichbar
fi
rm /Automatisierung/mytemp