PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mit if anweisung überprüfen ob



Linuxneuling
29.10.2004, 22:46
Hallo!

Ich möchte dieses WE intensiv mit Shell Sripte beschäftigen. Im Moment fällt mir nichts ein wie ich mit der IF Anweisung machen kann ob die eine Verzeichnis von einem entfernten Server gemountet ist.

Z. B

if mount /remoteserver

then tar cvf /dev/tape /remoteserver

done

oder wie kann ich mit der if anweisung pingen, wenn eine Antwort kommt dann gehts weiter...

Sorry dass ich irrtümlich im C++ Bereich gepostet habe.
@Admin bitte diesen Beitrag verschieben...

fossy
29.10.2004, 22:58
wenn ich wissen will, ob (bzw. wie oft) /dev/hda1 gemountet ist frage ich

cat /etc/mtab | grep -c /dev/hda1

wenn es (ein mal) gemountet ist bekomme ich eine 1, wenn nicht, eine null.

hilft dir das weiter?

gruss, fossy.

thorus
30.10.2004, 12:06
Sorry dass ich irrtümlich im C++ Bereich gepostet habe.
@Admin bitte diesen Beitrag verschieben...
Erledigt! ;)

Cyber
30.10.2004, 16:24
oder wie kann ich mit der if anweisung pingen

Prinzipiell solltest Du den Exit-Code eines Programms auswerten, d.h. Du machst z.B. ein


ping -q -W 5 -c 3 192.168.0.1 >/dev/null
if [ $? -eq "0"]
then
echo "Server erreicht"
else
echo "Verbindung fehlgeschlagen"
fi


Also mit $? frägst den Exit Code des zuvor ausgeführten Programmes ab. Die Werte die er annehmen kann, ist in der entsprechenden man-page des Befehls zu entnehmen. Exit-Code "0" steht immer für "Erfolgreich".

Xanti
30.10.2004, 16:33
if [ $? -eq "0"]...


Vereinfachend kannste das


-eq "0"

auch weglassen. Ist sonst doppelt-gemoppelt :)

Gruss, Phorus

fossy
30.10.2004, 19:22
hier noch mal ne version mit leichter süss-sauer-note (so ganz mit ohne if):


ping -q -W 5 -c 3 web.de >/dev/null 2>&1 && (echo "ist da") || (echo "nicht da")
fossy.

Xanti
30.10.2004, 20:00
hier noch mal ne version mit leichter süss-sauer-note (so ganz mit ohne if):


ping -q -W 5 -c 3 web.de >/dev/null 2>&1 && (echo "ist da") || (echo "nicht da")
fossy.

Spielverderber ;)

Cyber
31.10.2004, 10:39
Hehe :] auch gut.
Allerdings wollte er ja wissen wie er mit IF was macht, nicht wie er einzeiler zusammennagelt.

rup
31.10.2004, 20:18
Oder so:



if ping -c 4 www.google.de &> /dev/null
then
echo "Google ist da"
else
echo "Google ist tot"
fi

rup
31.10.2004, 20:22
@ Cybermarc

Was hast du fuer ein Ping-Programm, mein ping kennt den Parameter -W nicht, was macht der?

Cyber
01.11.2004, 00:35
-W ist der Timeout. Wenn ping nach n Sekunden (im obigen Beispiel 5) nicht erfolgreich war, bricht es ab.

Linuxneuling
03.12.2004, 14:10
wenn ich wissen will, ob (bzw. wie oft) /dev/hda1 gemountet ist frage ich

cat /etc/mtab | grep -c /dev/hda1

wenn es (ein mal) gemountet ist bekomme ich eine 1, wenn nicht, eine null.

hilft dir das weiter?

gruss, fossy.

Wie gebe ich die Rückgabewert an, wenn 1 dann ist gemountet und auch ok, und der Skript soll bei then weiter machen und nicht bei else....


if cat /etc/mtab | grep -c /mnt/ | return = 1

then cp /home/office/test.txt /mnt/

else echo "konnte nicht kopiert werden"

fi

Phate
03.12.2004, 14:24
if [ `cat /etc/mtab | grep -c /mnt/` -eq 1 ]; then
cp /home/office/test.txt /mnt/
else
echo "konnte nicht kopiert werden"
fi

hehejo
03.12.2004, 14:29
Na der Rückgabewert steht wieder in $?