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