Autor |
Nachricht |
|
Titel: Mein erstes Shell-Script --> Bitte um Kritik
Verfasst am: 30.06.2006, 00:01 Uhr
|
|
Anmeldung: 30. Jun 2005
Beiträge: 449
|
|
Tach auch,
hab' mich nun mal in Shell-Scripting eingearbeitet und beginne nun mal ein kleines Script zu schreiben, das folgendes macht:
--> IP-Adresse von Host und beliebigen Username der IP einlesen
--> Host in Schleife anpingen
--> Sobald Host online ist, Meldung via Sound und Text ausgeben.
Es ist mein erstes Script, ich bitte daher um STARKE Kritik, was Syntax und allgemein Verbesserung angeht. Wie kann man das Script verbessern, es effizienter gestalten, ist das mit den doppelten Klammern <((bla-bla))> beim <if>-Statement korrekt und eine generelle Frage:
Wie kann ich das echo von sämtlichen Befehlen unterdrücken? ist das mit meinem </dev/null> sinnvoll oder wie macht ihr das?
Besten Dank im Voraus.
Greetz
DANNYBOY
Code:
#!/bin/sh
# script checks if user (host) is online (via ping)
audiofile="/usr/share/sounds/KDE_Startup_2.ogg"
# checking audiofile
if [ ! -f $audiofile ]; then
echo "audiofile $audiofile not found!"
echo "no sound-notification is possible (text only)!"
isAudio=0
else
isAudio=1
fi
# reading user and host-ip
if (($# != 2)); then
echo "Enter user-name of destination host: "
read user
echo "enter IP-Address of destination host: "
read ip
else
user=$1
ip=$2
fi
echo "checking user $user @ $ip ..."
# wait until host is online
until `ping -c 1 $ip > /dev/null`; do
sleep 1
done
echo "user $user @ $ip is now online"
if ((isAudio)); then
play $audiofile > /dev/null &
fi
exit 0
|
|
|
|
|
|
|
Titel:
Verfasst am: 02.07.2006, 22:54 Uhr
|
|
Anmeldung: 30. Jun 2005
Beiträge: 449
|
|
War das 'ne ungewöhnliche Frage nach Kritik?
Greetz
DANNY |
|
|
|
|
|
|
Titel:
Verfasst am: 03.07.2006, 14:23 Uhr
|
|
Anmeldung: 04. Feb 2004
Beiträge: 92
|
|
Dannyboy hat folgendes geschrieben::
War das 'ne ungewöhnliche Frage nach Kritik? Geschockt
Greetz
DANNY
naja soviele skriptexperten gibts hier im forum halt nicht
(wahrscheinlich doch, aber die haben halt auch nicht immer Zeit )
Dein skript sieht für mich ganz ok aus, würde mich aber auch nicht wundern wenn es leute wie acritox mit gleichem funktionsumfang auf 5 Zeilen stutzen könnten ^^
außerdem stellt sich die frage ob ein ping zur ermittlung ob ein host online ist der beste weg ist
evtl. könntest du auch die überprüfung des hosts mit einem bereits existierenden scanning tool machen (z.B. nmap)
Dann ein skript aufbauen was regelmäßig polite scans im lokalen netzwerk durchführt und vorhandene hosts weiterleitet
Die infos nimmt dein skript dann auf und meldet sich dann sobald ein host online gegangen ist, samt seiner ip addresse
btw. kannst dir auch mal mein skript anschauen und bewerten
http://kanotix.com/PNphpBB2-viewtopic-t-19032.html
mfg
Andreas |
|
|
|
|
|
|
Titel:
Verfasst am: 05.07.2006, 15:40 Uhr
|
|
Anmeldung: 30. Jun 2005
Beiträge: 449
|
|
Yeah Andreas,
danke für Deine Hinweise. nmap funktioniert super! Dein Script scheint auch wunderbar zu sein, auch wenn ich nicht alles nachvollziehhen kann, he he. Oh Mann, acritox (also der andere Andreas) is' echt 'n richtiger Freak
Greetz
DANNY |
|
|
|
|
|
|
Titel:
Verfasst am: 07.08.2006, 18:24 Uhr
|
|
Anmeldung: 19. Sep 2005
Beiträge: 20
Wohnort: GE-Buer
|
|
Funktioniert doch Dein Script , oder? Was willst Du denn für eine Kritik hören?
Es gibt unzählige Arten zu scripten...jeder hat einen anderen Stil. Letztendlich zählt
doch nur das es die Aufgabe löst. |
_________________ Linux be root, Windows reboot!
|
|
|
|
|
|
Titel:
Verfasst am: 07.08.2006, 18:38 Uhr
|
|
Anmeldung: 17. Dez 2003
Beiträge: 16790
|
|
Du solltest variablen, die die für was anderes als echo nutz grundsätzlich als "$var" schreiben, falls es möglich ist, dass var="text mit leerzeichen" sein kann. In deinem Beispiel trifft dies besonders für $audiofile zu. ((isAudio)) so eine schreibweise ist mir absolut umbekannt. Wenn du schon mit extra kurzen tests arbeiten willst:
unset isAudio
[[ $isAudio ]] || echo kein isAudio gesetzt
isAudio=weiss-der-geier-was
[[ $isAudio ]] && echo isAudio hat nen wert |
|
|
|
|
|
|
Titel:
Verfasst am: 07.08.2006, 19:04 Uhr
|
|
Anmeldung: 05. Okt 2004
Beiträge: 2069
Wohnort: w3
|
|
Code:
until `ping -c 1 $ip > /dev/null`; do
sleep 1
Je nachdem wo Du das vorhast, könntest Du die sleep etwas raufsetzen - wenn Du in meinem Netz dauernd sinnlos herum-pingst, wärest Du ja schon gekündigt.
Greetings,
Chris |
_________________ "An operating system must operate."
|
|
|
|
|
|