Insbesondere die Abschnitte zur IF Abfrage nochmal anschauen. Achte auf die Leerzeichen nach bzw. vor den eckigen Klammern!
Da ich gute Laune habe, hier mal das von Dir gewünschte Skript:
#!/bin/bash
if [-n "$1"]; then
/bin/ping -q -c1 $1 &\> /dev/null
else
echo "Nutzung: $0 "
exit 1
fi
if ["$?" -gt 0]; then
echo $1 nicht erreichbar!
else
echo $1 erreichbar!
fi
exit 0
Zunächst solltest Du bei einem solchen shell skript den zu pingenden host nicht fest vorgeben, sondern per Parameter übergeben. Sollte irgend ein Dödel diesen Parameter vergessen, dann muss das Programm mit einer aussagekräftigen Fehlermeldung aussteigen (in diesem Fall mit Exit Code 1
Den ping selbst solltest Du möglichst geräuschlos machen (-q) und sonstige Ausgaben dennoch alle ins Nirvana schicken ( &> /dev/null), denn irgendwelche Meldungen vom original-ping versauen Dir u.U. die Ausgabe.
ich habe aber immer noch ein kleines problem
und zwar wenn der host nicht erreichbar ist .
bekommt das script kein ende .
erst nach dem abrechen (mit Strg c ) kommt die meldung
>hostname nicht erreichbar!
vieliecht fällt dir oder auch jemand anderem was dazu ein .
MfG
Marcus
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
ich habe aber immer noch ein kleines problem
und zwar wenn der host nicht erreichbar ist .
bekommt das script kein ende .
erst nach dem abrechen (mit Strg c ) kommt die meldung
>hostname nicht erreichbar!
Dann hast Du aber nicht 100% meine Version übernommen, sondern hast höchstwahrscheinlich eine andere Abbruchbedingung gewählt. Wenn Du die Option „-c1“ beim „ping“ Befehl vergisst, dann läuft er bei einem erreichbaren Host endlos. Bei einem nicht erreichbaren Host hingegen bricht das Programm auch ohne „-c1“ augenblicklich ab, weil „ping“ eine 1 zurückliefert (Keinerlei Antwort vom Host).