-copycat-
Goto Top

IP mittels expr überprüfen

Tagchen

Ich möchte überprüfen, ob eine angegebene IP (Parameter von PHP-Seite) der normalen Form einer IP entspricht.

Bisher versuchte ich folgendes:

# IP=192.168.2.1
# IPT=`expr $IP : '\(*\.*\.*\.*\)'` 
# echo $IPT

# 

oder in der Form:

# IP=192.168.2.1
# IPT=`expr $IP : '\([*]\.[*]\.[*]\.[*]\)'` 
# echo $IPT

# 

Funktioniert jedoch wie ihr seht beides nicht, kann mir da jemand helfen?

Gruss CopyCat

Content-ID: 110098

Url: https://administrator.de/contentid/110098

Ausgedruckt am: 25.11.2024 um 19:11 Uhr

-CopyCat-
-CopyCat- 26.02.2009 um 17:24:27 Uhr
Goto Top
Und wieder finde ich die Lösung kurz nachdem ich einen Post geschrieben habe :P

# IP=192.168.2.1
# IPT=`expr $IP : '\(.*\..*\..*\..*\)'` 
# echo $IPT
192.168.2.1
#

Sieht komisch aus, is aber so ^^

Gruss CopyCat
theton
theton 27.02.2009 um 01:35:02 Uhr
Goto Top
Deine IP könnte also auch foobar.foobar.foobar.foobar sein und er würde sie als richtig erkennen. Ich würde das '.*' (also beliebig viele beliebige Zeichen) eher durch ein '\d{1,3}' (Zahl mit 1-3 Stellen) ersetzen.
-CopyCat-
-CopyCat- 03.03.2009 um 13:29:58 Uhr
Goto Top
Ach das ist nicht das Problem, der Code hier war nur ein kleiner Teil.
In meinem Script wird die IP anschliessend noch mit awk aufgeteilt und jede einzelne Zahl überprüft (ob zwischen 0 und 255, Netz- und BC-Addressen dürfen nicht akzeptiert werden), deshalb muss ich hier nur überprüfen, ob das Format "irgendwas.irgendwas.irgendwas.irgendwas" eingehalten wird.
Da bei awk der Punkt als Delimiter gesetzt ist, wurde bei einer Angabe ohne Punkt (z.B. "TestIP") die Prüfung trotzdem erfolgreich durchgegangen (ka wieso) und beim Abfüllen der endgültigen Variabel IP entstant dann sowas: "TestIP...".
Hoffe das war einigermassen verständlich^^.

Gruss CopyCat

PS: Natürlich könnte ich das mit \d{1,3} trotzdem anwenden, würde aber keine Auswirkung aufs Endergebnis haben, zudem ist das Eingabefeld im WebGUI auf 15 Zeichen beschränkt.