kanotix.com

Scripte - Mein erstes Shell-Script --> Bitte um Kritik

Dannyboy - 30.06.2006, 00:01 Uhr
Titel: Mein erstes Shell-Script --> Bitte um Kritik
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

Dannyboy - 02.07.2006, 22:54 Uhr
Titel:
War das 'ne ungewöhnliche Frage nach Kritik? Geschockt

Greetz
DANNY
Andreas - 03.07.2006, 14:23 Uhr
Titel:
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 Winken )
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
Dannyboy - 05.07.2006, 15:40 Uhr
Titel:
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 Smilie

Greetz
DANNY
stormmurdoc - 07.08.2006, 18:24 Uhr
Titel:
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.
Kano - 07.08.2006, 18:38 Uhr
Titel:
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
slam - 07.08.2006, 19:04 Uhr
Titel:
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. Winken
Greetings,
Chris
Alle Zeiten sind GMT + 1 Stunde
PNphpBB2 © 2003-2007