BASH: IP Prüfen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
deb
Beiträge: 82
Registriert: 18.09.2005 13:30:20

BASH: IP Prüfen

Beitrag von deb » 12.03.2006 10:44:11

Hi.

hat jemand zufällig eine Patentlösung ;-) um eine IPv4-Adresse auf Richtigkeit zu prüfen?
Dabei aber ohne sie extra zu Pingen zu müssen, das wäre momentan meine Idee, doch darauf ist nicht immer Verlass (Gegenstelle PING-Schutz oder offline)


Ich möchte eine IP-Abfrage so erweitern, dass es wenn die eingabe keine gültige IP ist, versucht werden soll (wenn mind. ein Punkt vorhanden) die Eingabe als Host aufzulösen und wenn dann daraus keine vernünftige IP rauskommt einen abbruch erzeugen werden soll.
Zuletzt geändert von deb am 12.03.2006 13:08:17, insgesamt 1-mal geändert.

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 12.03.2006 11:05:40

hallo,

> hat jemand zufällig eine Patentlösung um eine IP-Adresse auf Richtigkeit zu prüfen?

ja, etliche ;)
http://www.google.de/search?hl=de&q=reg ... uche&meta=
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

deb
Beiträge: 82
Registriert: 18.09.2005 13:30:20

Beitrag von deb » 12.03.2006 13:23:06

finupsen hat geschrieben:hallo,

> hat jemand zufällig eine Patentlösung um eine IP-Adresse auf Richtigkeit zu prüfen?

ja, etliche ;)
http://www.google.de/search?hl=de&q=reg ... uche&meta=
Sorry, aber ich bin kein Fan der regulären Ausdrücke :-(
Vielzu cryptisch. Und wenn es doch mal endlich funktioniert, versagt es trotzdem irgendwann mal.

Mach ich es halt so:

Code: Alles auswählen

			ip1=`echo -n "$ip" | cut -d "." -f 1 | tr -d "\n"`
			ip2=`echo -n "$ip" | cut -d "." -f 2 | tr -d "\n"`
			ip3=`echo -n "$ip" | cut -d "." -f 3 | tr -d "\n"`
			ip4=`echo -n "$ip" | cut -d "." -f 4 | tr -d "\n"`
			
			if [ $ip1 -lt 0 ] || [ $ip1 -gt 223 ] || [ $ip1 -eq 127 ]; then ip="bad"; fi
			if [ $ip2 -lt 0 ] || [ $ip2 -gt 255 ]; then ip="bad"; fi
			if [ $ip3 -lt 0 ] || [ $ip3 -gt 255 ]; then ip="bad"; fi
			if [ $ip4 -lt 1 ] || [ $ip4 -gt 254 ]; then ip="bad"; fi
Wenn ich mir jetzt aber noch das hier
http://www.ietf.org/rfc/rfc3330.txt --- 3. Summary Table
anschaue, ist die Variante noch recht ausbaufähig und sowieso "Regulär" nicht mehr machbar.


Nur mal rein theretisch, wie könnte es mit IPv6 aussehen ;-)

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 12.03.2006 13:46:26

deb hat geschrieben: Und wenn es doch mal endlich funktioniert, versagt es trotzdem irgendwann mal.
na... deine meinung. Regex hat sich schon vor jahren etabliert und versagt , wenn der ausdruck korrekt
ist, niemals ... warum sollte es auch ? gibts eine quelle zu deiner aussage ?

um eine ip zu prüfen hat sich dieses hier etabliert:

Code: Alles auswählen

echo 192.168.0.1 | egrep "^([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])$"
kannst ja gerne mal versuchen ein "versagen" zu finden ;)
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

deb
Beiträge: 82
Registriert: 18.09.2005 13:30:20

Beitrag von deb » 12.03.2006 14:57:03

finupsen hat geschrieben:
deb hat geschrieben: Und wenn es doch mal endlich funktioniert, versagt es trotzdem irgendwann mal.
na... deine meinung. Regex hat sich schon vor jahren etabliert und versagt , wenn der ausdruck korrekt
ist, niemals ... warum sollte es auch ? gibts eine quelle zu deiner aussage ?
[/code]
Statt einer IP wurde das Datum zur Analyse gefiltert. > kein login mehr möglich :-(
Den Code habe ich aber leider nicht mehr. Beweise mussten dem neuaufgesetzten System unweigerlich weichen :-(
Seitdem nie wieder sed für kritische sachen.

Code: Alles auswählen

um eine ip zu prüfen hat sich dieses hier etabliert:

[code]
echo 192.168.0.1 | egrep "^([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])$"
kannst ja gerne mal versuchen ein "versagen" zu finden ;)
Ich werde es mal intergrieren, nebenbei Fehler loggen lassen und dann irgendwann bescheid sagen ;-)

2 Löcher hat es auf jedenfall:
Broadcast und Netzwerk-Bezeichnung lässt es durch.
Gerade bei der x.x.x.255 kann jemand viel ärger mit sowas verursachen. (zumindest in einem Privaten Netzwerk).
Und aus technische Gründen (so glaub ich) ist beim Klasse C bei 223.255.255.254 schluss.
Klasse D und E im Internet = ?


Gruß

yeti

Beitrag von yeti » 12.03.2006 15:35:06

deb hat geschrieben:Gerade bei der x.x.x.255 kann jemand viel ärger mit sowas verursachen. (zumindest in einem Privaten Netzwerk).
Was ist mit 10.1.2.255 im Netz 10.0.0.0/8?
Und in 10.1.2.0/24?
deb hat geschrieben:Und aus technische Gründen (so glaub ich) ist beim Klasse C bei 223.255.255.254 schluss.
Es ist förderlich, Glauben durch Wissen zu ersetzen. Lesen bildet.

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 12.03.2006 15:44:11

> hat jemand zufällig eine Patentlösung Wink um eine IPv4-Adresse auf Richtigkeit zu prüfen?

der begriff "richtigkeit" kann unter umständen sehr umfangreich sein ....

*TILT*
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

deb
Beiträge: 82
Registriert: 18.09.2005 13:30:20

Beitrag von deb » 12.03.2006 15:46:32

yeti hat geschrieben:
deb hat geschrieben:Gerade bei der x.x.x.255 kann jemand viel ärger mit sowas verursachen. (zumindest in einem Privaten Netzwerk).
Was ist mit 10.1.2.255 im Netz 10.0.0.0/8?
Und in 10.1.2.0/24?
deb hat geschrieben:Und aus technische Gründen (so glaub ich) ist beim Klasse C bei 223.255.255.254 schluss.
Es ist förderlich, Glauben durch Wissen zu ersetzen. Lesen bildet.
Ich glaube es nicht nur, ich weiß es auch ;-)
223 - 11011111
224 - 11100000 - die Bitfolge von 111..... darf nicht auftauchen. Warum das aber so ist, war hier nicht das Thema :-)



finupsen hat geschrieben:> hat jemand zufällig eine Patentlösung Wink um eine IPv4-Adresse auf Richtigkeit zu prüfen?

der begriff "richtigkeit" kann unter umständen sehr umfangreich sein ....

*TILT*
wäre Gültigkeit besser gewesen =?

Auf jedenfall ab 224 ist allgemein Schluss.

Ich freue mich schon auf IPv6 ;-)
Dann Packe ich meinen Koffer *g*

yeti

Beitrag von yeti » 12.03.2006 15:55:51

Du wirst, um besser verstanden zu werden, erstmal eine genaue Definition des Begrifffes "korrekte IP-Adresse" formuliern müssen.

Weiter scheint mir, daß Du noch etwas mehr über das Zusammenspiel von Adressen, Netzwerk-Adressen und Netzmasken lesen wirst, bevor dieses ein korrektes Abbild bestehender Regeln zum Thema IP-Adressieung wird.

Antworten