PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Prüfen, ob eingegebene IP gültig ist?



clumsy
20-02-2004, 14:30
Hallo,

ich erfrage per kleinem Shell-Script (über dialog) den User nach einer IP-Adresse und Subnetmaske. Er kann im Grunde eingeben was er will...sollte aber sowas eingeben: 192.168.216.201/255.255.255.0
Wie kann ich jetzt prüfen, ob es sich um eine gültige IP-Adresse/Subnetzmaske handelt??
Gültige IP-Adressen beginnen hier mit "192.168.216." und enden mit einer Zahl zwischen 1 und 254.
Ich hab das mal so versucht: (in $input steht die Eingabe des Users)



echo $input | egrep -c '192.168.216.[[:digit:]][[:digit:]]?[[:digit:]]?'
if [ $? ! -eq "1" ]; then
dialog --msgbox "Keine gültige IP-Adresse" 10 60
exit
else dialog --msgbox "GÜLTIG" 10 60
fi


Dummerweise sagt er egal was ich eingebe, dass es GÜLTIG ist. Den Teil der Subnetzmaske hab ich noch nicht berücksichtigt (auch nicht bei der Usereingabe).
IP-Adresse die mit einer Zahl > 200 enden, sollen die Subnetzmaske 255.255.240.0 haben. < 200 die Subnetzmaske 255.255.255.0
Wie mach ich das richtig??


Danke!
clumsy

PS: wäre euch dankbar für ne gute Buchempfehlung (hab die SuFu benutzt und auch einiges gefunden...trotzdem nebenher ;-) )

systemdefender
04-03-2004, 13:19
probier mal ...

ip_valid=$(echo $input | awk -F. '($4>=1) && ($4<=254) {print 1}'
if [ $ip_valid ! -eq "1" ]; then
...
b.z.w.
...
if [! $ip_valid ]; then
...
sd

ps: lektüre zu awk (http://www.mrunix.de/forums/showthread.php?s=&postid=152425#post152425)

e/ +b.z.w. /+link