Ce petit bout de script permet de vérifier qu'une IP donnée est bien une IP valide en théorie (il ne vérifie pas qu'elle est accessible):
Exemples:
tcl
namespace eval nettools {
variable mask
set mask(ipv4) {^(?:25[0-5]|2[0-4]\d|[0-1]?\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|[0-1]?\d{1,2})){3}$}
set mask(ipv6) {^([[:xdigit:]]{1,4}(?::[[:xdigit:]]{1,4}){7}|::|:(?::[[:xdigit:]]{1,4}){1,6}|[[:xdigit:]]{1,4}:(?::[[:xdigit:]]{1,4}){1,5}|(?:[[:xdigit:]]{1,4}:){2}(?::[[:xdigit:]]{1,4}){1,4}|(?:[[:xdigit:]]{1,4}:){3}(?::[[:xdigit:]]{1,4}){1,3}|(?:[[:xdigit:]]{1,4}:){4}(?::[[:xdigit:]]{1,4}){1,2}|(?:[[:xdigit:]]{1,4}:){5}:[[:xdigit:]]{1,4}|(?:[[:xdigit:]]{1,4}:){1,6}:)$}
proc isip { ip } {
if {[regexp $::nettools::mask(ipv4) $ip ipv4]} {
putlog "$ip is ipv4"
} elseif {[regexp $::nettools::mask(ipv6) $ip ipv6]} {
putlog "$ip is ipv6"
} else {
putlog "$ip is not an ip"
}
}
}
Exemples:
Code:
.tcl ::nettools::isip 127.0.0.1
[14:59] 127.0.0.1 is ipv4
.tcl ::nettools::isip 10.315.24.3
[15:00] 10.315.24.3 is not an ip
.tcl ::nettools::isip 10.215.24.3
[15:00] 10.215.24.3 is ipv4
.tcl ::nettools::isip fe80::f6c9:23e6:f335:570c
[15:01] fe80::f6c9:23e6:f335:570c is ipv6
.tcl ::nettools::isip ::1
[15:02] ::1 is ipv6