Suche eine Möglichkeit zum pingen im Netz

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
SanfterWolf
Beiträge: 3
Registriert: 15.11.2003 14:21:38

Suche eine Möglichkeit zum pingen im Netz

Beitrag von SanfterWolf » 15.11.2003 14:32:07

Hallo,
ich bin gerade dabei mich etwas mehr mit dem schreiben von Scripten zu beschäftigen
nun stehe ich vor einem Problem:

Ich möchte gerne ein Netz durch scannen doch das problem was ich habe ist folgendes:

Netzbereich ist 192.168.0.1 bis 192.168.254.254
Netzmask ist 255.255.255.255

Nun wollte ich mal das Netz durch bingen lassen um festzustellen an wecher Adresse
sich im Netz ein PC befindet.

Habe auch schon ein Script gefunden das mit einer while-Schleife arbeitet doch so
kann ich immer nur eine IP-Länge (192.168.x.1-254) durchscannen. dann müßte ich an
der stelle vom x eine neue Nummer eintragen von Hand. gibt es die möglichkeit das
auch in einem hinzubekommen??

Würde mich freuen wenn ich Hilfe finden würde.

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 15.11.2003 14:39:07

Code: Alles auswählen

nmap -sP 192.168.[0-254].[1-254]
Zuletzt geändert von Chimerer am 15.11.2003 14:55:43, insgesamt 1-mal geändert.

Benutzeravatar
godsmacker
Beiträge: 902
Registriert: 16.03.2003 21:50:26
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von godsmacker » 15.11.2003 14:44:36

Je nachdem was Du machen willst solltest Du vielleicht auch einfach ein kleines Skript in PERL o.ä. schreiben.
Hier mal 'ne kleine Funktion, die Dir jeweils die darauffolgende IP ermittelt.

Code: Alles auswählen

sub next_ip {
        my @ip = split(/\./, shift);
        $ip[3]++;
        $ip[2]++, $ip[3] -= 255 if($ip[3] > 255);
        $ip[1]++, $ip[2] -= 255 if($ip[2] > 255);
        $ip[0]++, $ip[1] -= 255 if($ip[1] > 255);
        $ip[0] -= 255 if($ip[0] > 255);
        return join('.', @ip);
}
Dann setzt Du eben zu Anfang eine Ip und ermittelst mit dieser Funktion einfach immer die jeweils daruaffolgende. Damit kannst Du dann teste was auch immer Du testen willst.

Gruß,
Florian

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 15.11.2003 14:50:59

godsmacker hat geschrieben:Je nachdem was Du machen willst solltest Du vielleicht auch einfach ein kleines Skript in PERL o.ä. schreiben.
Warum denn extra ein Script? Geht mit nmap doch wesentlich einfacher.

SanfterWolf
Beiträge: 3
Registriert: 15.11.2003 14:21:38

Beitrag von SanfterWolf » 15.11.2003 14:59:44

Hallo,

Danke für die Tips, doch auf dem PC von dem aus ich das testen will befindet sich kein nmap und auch kein Perl.
Ich brauche als Hilfe um das ganze ohne nmap zu schaffen, habe es ja auch schon mit
dem normalen if/then(while)/else getestet. Doch wie schon beschrieben kann ich immer nur einen und nicht alle Bereiche testen.

Schon mal danke für die tips

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 15.11.2003 15:17:43

SanfterWolf hat geschrieben:Hallo,

Danke für die Tips, doch auf dem PC von dem aus ich das testen will befindet sich kein nmap und auch kein Perl.
Ich brauche als Hilfe um das ganze ohne nmap zu schaffen, habe es ja auch schon mit
dem normalen if/then(while)/else getestet. Doch wie schon beschrieben kann ich immer nur einen und nicht alle Bereiche testen.

Schon mal danke für die tips
Wenn das so ist:

Code: Alles auswählen

#!/bin/sh

for v in `seq 0 254`
do
	for i in `seq 1 254`
	do
		ping -c 1 192.168.$v.$i
	done
done

SanfterWolf
Beiträge: 3
Registriert: 15.11.2003 14:21:38

Beitrag von SanfterWolf » 15.11.2003 15:32:16

Danke,

das funktioniert, nun muß ich nur nach daran arbeiten wie ich das in eine Liste bekomme


Werde auch versuchen hier hilfe zu leisten wenn ich kann

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 15.11.2003 15:47:44

SanfterWolf hat geschrieben:Danke,

das funktioniert, nun muß ich nur nach daran arbeiten wie ich das in eine Liste bekomme

Code: Alles auswählen

#!/bin/sh

for v in `seq 0 254`
do
	for i in `seq 1 254`
	do
		ping -c 1 192.168.$v.$i > /dev/null
		if [ $? -eq 0 ]
		then
			echo 192.168.$v.$i is up
		else
			echo 192.168.$v.$i is down
		fi
	done
done
Um das Ergebnis in einer Datei abzuspeichern:

Code: Alles auswählen

./script > liste
Gruß Jan
Zuletzt geändert von Chimerer am 15.11.2003 15:49:22, insgesamt 1-mal geändert.

Benutzeravatar
godsmacker
Beiträge: 902
Registriert: 16.03.2003 21:50:26
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von godsmacker » 15.11.2003 15:48:23

Chimerer hat geschrieben:
godsmacker hat geschrieben:Je nachdem was Du machen willst solltest Du vielleicht auch einfach ein kleines Skript in PERL o.ä. schreiben.
Warum denn extra ein Script? Geht mit nmap doch wesentlich einfacher.
Hab ich doch geschrieben: Je nachdem was er machen will. Vielleicht möchte er danach verschienene Scans machen, Irgendwas mit smbclient oder wieß der Teufel was.

Florian

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 19.11.2003 21:42:12

BTW: Könnte man nicht einfach ein Broadcast machen und schauen, welcher Rechner antwortet?

Benutzeravatar
idefix
Beiträge: 14
Registriert: 04.11.2003 21:06:29

Beitrag von idefix » 28.11.2004 17:23:00

windows rechner antworten per default nicht auf broadcast pings, und bei linux ist das wohl sehr von der distri abhaengig.
wenn du allerdings nen arp (mac) broadcast hinbekommst dann sollte das natuerlich auch gehen

Antworten