| 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: 16809
 
 
 |  | 
        
          | 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."
 |  
         
	        |  |  | 
  
    |  | 
  
    |  | 
  
  
    |  |