• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] IP-Adresse prüfen

HltmaN

Newbie
Hallo zusammen,

ich möchte gerne über die folgende Funktion die IP-Adresse auf die richtige Schreibweise überprüfen. Allerdings wird die IPv6 als ungültig erklärt.


Code:
#!/bin/bash

function checkIP {
if ! [[ $1 =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]] || \
[[ $1 =~ ^[0-9a-fA-F]{1,4}(\:[0-9a-fA-F]){1-4}{7}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,1}(\:[0-9a-fA-F]{1,4}){1,6}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,2}(\:[0-9a-fA-F]{1,4}){1,5}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,3}(\:[0-9a-fA-F]{1,4}){1,4}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,4}(\:[0-9a-fA-F]{1,4}){1,3}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,5}(\:[0-9a-fA-F]{1,4}){1,2}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,6}(\:[0-9a-fA-F]{1,4}){1,1}$ ]]; 
then
	echo "Please select a valid IP-Address..."	
	exit 1
else
	echo "valid"
fi
}       

checkIP 192.168.3.1
checkIP 2003:75:8f0e:d901:20c:29ff:fe68:f194

Danke schonmal.

Grüße
 

spoensche

Moderator
Teammitglied
Code:
'/^(((?=(?>.*?(::))(?!.+\3)))\3?|([\dA-F]{1,4}(\3|:(?!$)|$)|\2))(?4){5}((?4){2}|(25[0-5]|(2[0-4]|1\d|[1-9])?\d)(\.(?7)){3})\z/i

Siehe auch: http://home.deds.nl/~aeron/regex/
 
OP
H

HltmaN

Newbie
Ich habs glaub geschafft ;)
Code:
#!/bin/bash

function checkIP {
if [[ $1 =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]] || \
[[ $1 =~ ^[0-9a-fA-F]{1,4}(\:[0-9a-fA-F]{1,4}){7}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1}(\:[0-9a-fA-F]{1,4}){1,6}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,2}(\:[0-9a-fA-F]{1,4}){1,5}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,3}(\:[0-9a-fA-F]{1,4}){1,4}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,4}(\:[0-9a-fA-F]{1,4}){1,3}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,5}(\:[0-9a-fA-F]{1,4}){1,2}$ ]] || \
[[ $1 =~ ^([0-9a-fA-F]{1,4}\:){1,6}(\:[0-9a-fA-F]{1,4}){1}$ ]]; then
	echo "valid"	
else
	echo "invalid"
fi
}
 

framp

Moderator
Teammitglied
Glückwunsch! ... nur kannst Du für die Mitlesenden den Unterschied aufzeigen? regex sind sehr mächtig - aber auch nicht leicht zu lesen :-(
 
OP
H

HltmaN

Newbie
Danke sponsche, der Ausdruck ist relativ krass, ich hoff meiner stimmt auch :???:
 
OP
H

HltmaN

Newbie
In der Zeile waren die Klammern "( )" falsch gesetzt:

Code:
[[ $1 =~ ^[0-9a-fA-F]{1,4}(\:[0-9a-fA-F]){1-4}{7}$ ]] || \
und dann hab ich noch aus
Code:
{1,1} --> {1}
gemacht.

Grüße
 

spoensche

Moderator
Teammitglied
Wenn dein Problem gelöst ist dann setze den Thread bitte noch auf gelöst. Ersten Beitrag editieren und ein [gelöst] im Titel einfügen.
 
Oben