• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Der Sommer ist da! Laue Nächte, lange Abende im Biergarten und Mücken in Heeresstärke - dazu passend lautet das Thema unseres Fotowettbewerbs im Juni Nachtleben --> 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: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
 
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.
 
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.
 
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