19.03.2024, 09:55 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
Dannyboy
Titel: Mein erstes Shell-Script --> Bitte um Kritik  BeitragVerfasst 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
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Dannyboy
Titel:   BeitragVerfasst am: 02.07.2006, 22:54 Uhr



Anmeldung: 30. Jun 2005
Beiträge: 449

War das 'ne ungewöhnliche Frage nach Kritik? Geschockt

Greetz
DANNY
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Andreas
Titel:   BeitragVerfasst 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 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
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Dannyboy
Titel:   BeitragVerfasst 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 Smilie

Greetz
DANNY
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
stormmurdoc
Titel:   BeitragVerfasst 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!
 
 Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen ICQ-Nummer 
Antworten mit Zitat Nach oben
Kano
Titel:   BeitragVerfasst am: 07.08.2006, 18:38 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16783

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
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
slam
Titel:   BeitragVerfasst 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. Winken
Greetings,
Chris

_________________
"An operating system must operate."
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger ICQ-Nummer 
Antworten mit Zitat Nach oben
Beiträge vom vorherigen Thema anzeigen:     
Gehe zu:  
Alle Zeiten sind GMT + 1 Stunde
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
PNphpBB2 © 2003-2007 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.