Script FreeIP

Diskutiere Script FreeIP im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo zusammen, Ich möchte ein shell-script schreiben, welches mir in einem IP-Bereich alle IP-Adressen checkt, ob sie erreichbar sind. Das...

  1. #1 shadeghost, 04.03.2008
    shadeghost

    shadeghost Grünschnabel

    Dabei seit:
    04.03.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo zusammen,

    Ich möchte ein shell-script schreiben, welches mir in einem IP-Bereich alle IP-Adressen checkt, ob sie erreichbar sind. Das ganze soll in eine Datei geschrieben werden und später im Browser mit html angezeigt werden. Je nachdem ob der Host erreichbar ist oder nicht, wird die Shell-Ausgabe im HTML grün oder rot angezeigt.

    Ich habe ein bisschen rum probiert. Mir fehlt es aber an dem nötigen Know-How:

    #!/bin/bash

    # Script zum Prüfen welche IPs im Netz gebraucht werden und elche frei sind
    # Autor: Remo Fritschi

    echo "<html><head></head><body>" > FreeIP_Auswertung.html

    for ((zahl=1;zahl<10;zahl++)) do
    ping -c 1 -t 3 192.168.1.$zahl | grep "packet loss" > FreeIP_temp
    export wert="cat FreeIP_temp"

    if [ $wert = "1 packets transmitted, 0 packets received, 100% packet loss" ]; then
    echo "<font color='green'>192.168.1.$zahl: is free</font><br>" >> FreeIP_Auswertung.html
    else
    echo "<font color='red'>192.168.1.$zahl: blocked</font><br>" >> FreeIP_Auswertung.html
    fi
    echo "" >> FreeIP_Auswertung.txt
    done

    echo "</body></html>" >> FreeIP_Auswertung.html

    Bei diesem Script funktioniert die If-Abfrage nicht korrekt. Wie kann ich das Ping-Ergebnis eleganter ermitteln, damit ich es im If vergleichen kann? Ist es möglich das der Ping-Befehl nur true oder false ausgibt?
    Ich denke da so an awk oder sed...
    Könnt ihr mir weiterhelfen?

    Vielen Dank zum voraus!
     
  2. #2 Wolfgang, 04.03.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Nur ein paar Tipps.
    Du kannst mit ping auf den Returnwert testen.
    $?= 0 -> erfolgreich
    $? >0 Fehler
    Damit sparst du dir das grep
    Code:
    ping -c1 -q $IP 2>& 1>/dev/null;
    WERT=$?;
    
    if [ $WERT -eq 0 ];
    then
    echo "$IP erfolgreich";
    else
    ...
    fi
    
    Um die Ausgabe eines Command in eine Var zu speichern:
    Code:
    C=$(COMMAND);
    # oder veraltet mit Backtick
    C=`COMMAND`
    
    Gruß Wolfgang
     
  3. #3 aspire_5652, 04.03.2008
    Zuletzt bearbeitet: 04.03.2008
    aspire_5652

    aspire_5652 Tripel-As

    Dabei seit:
    02.01.2008
    Beiträge:
    198
    Zustimmungen:
    0
    Das geht:

    Code:
    #!/bin/bash
    
    HTML_FILE="./FreeIP_Auswertung.html"
    
    echo "<html><head></head><body>" > ${HTML_FILE}
    
    i=1
    while [ ${i} -le 255 ]
    do
    	IP="10.0.0.$i"
    	echo $IP
    	RETURN=$(ping -c 1 -t 3 ${IP} > /dev/null; echo $?)
    	if [ ${RETURN} = 1 ]
    	then
    		echo "<font color='green'>${IP}: is free</font><br>" >> ${HTML_FILE}
    	else
    		echo "<font color='red'>${IP}: blocked</font><br>" >> ${HTML_FILE}
    	fi
    	i=$(expr ${i} + 1)
    done
    
    echo "</body></html>" >> ${HTML_FILE}
    
     
  4. #4 shadeghost, 04.03.2008
    shadeghost

    shadeghost Grünschnabel

    Dabei seit:
    04.03.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Vielen Dank für eure schnelle Hilfe!
    Ich habs nun mit folgendem Script hinbekommen:
    Code:
    #!/bin/bash
    
    echo "<html><head></head><body>" > FreeIP_Auswertung.html;
    
    for ((zahl=1;zahl<255;zahl++)) do
            ping -c1 -t3 -q 192.168.1.$zahl 2>& 1>/dev/null;
            WERT=$?;
            if [ $WERT -eq 0 ]; then
                    echo "<font color='red'>192.168.1.$zahl: is blocked</font><br>" >> FreeIP_Auswertung.html
            else
                    echo "<font color='green'>192.168.1.$zahl: is free</font><br>" >> FreeIP_Auswertung.html
            fi
    done
    
    echo "</body></html>" >> FreeIP_Auswertung.html
    
     
  5. #5 Ale-x, 04.03.2008
    Zuletzt bearbeitet: 04.03.2008
    Ale-x

    Ale-x bash lehrling

    Dabei seit:
    13.04.2007
    Beiträge:
    109
    Zustimmungen:
    0
    Ort:
    Osnabrück
    dauert das nicht etwas zu lange? nur ne idee aber wie wär es so?
    Code:
    #!/bin/bash
    
    echo "<html><head></head><body>" > FreeIP_Auswertung.html
    
    nmap -sP 192.168.0.1-255 | grep "appears" | awk '{print $2}' | while read line ;do
    echo "<font color='red'>$line: is blocked</font><br>" >> FreeIP_Auswertung.html
    
    done
    echo "</body></html>" >> FreeIP_Auswertung.html
    
    
     
  6. #6 Always-Godlike, 04.03.2008
    Always-Godlike

    Always-Godlike Das Freak

    Dabei seit:
    31.12.2006
    Beiträge:
    939
    Zustimmungen:
    0
    Ort:
    Saarland
    Hab letztens auch so en nettes Script geschrieben, um zu überprüfen welche PC's online sind. An dem siehste auch, wie langsam so etwas mit Ping ist ^^ Der Vorschlag von Ale-x läuft da wohl schneller.
    Code:
    #!/bin/bash
    
    for i in $(cat ./iplist)
    do
    	suc=$(ping $i -c 1 -q -w 1 | grep received | cut -d " " -f4)
    	if [ "$suc" = "1" ]
    		then
    		echo -e "$i		[\033[1;32monline\033[1;0m]"
    		:
    	else
    		echo -e "$i		[\033[1;31moffline\033[1;0m]"
    	fi
    done
     
Thema:

Script FreeIP

Die Seite wird geladen...

Script FreeIP - Ähnliche Themen

  1. Python Script Hilfe

    Python Script Hilfe: Hey Leute, bin ganz neu hier und auch das Programmieren fällt mir noch nicht ganz so leicht... hab deswegen mal eine frage und hoffe jemand kann...
  2. Crontab und Scripts - Problem

    Crontab und Scripts - Problem: Hallo Zusammen Ich habe ein Script welches mittels Cronjob ausgeführt werden soll. Gemäss Log wird es auch ausgeführt, jedoch passiert nichts:...
  3. Script kopieren

    Script kopieren: Hallo, ich habe eine Frage: ich schreibe grade ein Unix script und möchte mit einem Befehl, eine bestimmte Bereich von diesem script in einem...
  4. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....
  5. Bashscript aus Debian6 läuft nicht auf Debian7

    Bashscript aus Debian6 läuft nicht auf Debian7: Hallo an alle, nachdem ich ein Skript von squeeze auf wheezy kopiert habe und ausführte, erschienen gleich wilde Fehlermeldungen, nach denen ich...