多个变量的条件(验证 IP 地址)

多个变量的条件(验证 IP 地址)

我有5个变量

前任:

a, b, c, d, x, 

如果它们不在 1-255 之间(1-32 带 x),则回显错误消息,或者放入随机文本或字符也回显错误消息,我该怎么做

经验:

echo "CIDR:"
read ip
x="$(echo $ip |cut -d "/" -f2)"
a="$(echo $ip |cut -d "." -f1)"
b="$(echo $ip |cut -d "." -f2)"
c="$(echo $ip |cut -d "." -f3)"
d="$(echo $ip |cut -d "." -f4 | cut -d "/" -f1)"

如果 ppl 输入错误的 IP 格式,如1337.-135.abcxyz.!@#@#/123,它会打印出错误消息:Error: wrong IP format...等

答案1

我们可以使用 ipcalc 来验证 IP 地址

来自男人:

 ipcalc - perform simple manipulation of IP addresses

例子

ipcalc -cs 192.168.1.1/30 && echo OK || echo NOT_OK

或者

ipcalc -cs "$a.$b.$c.$d/$x" && echo OK || echo NOT_OK

或者

ipcalc -cs "$ip" && echo OK || echo NOT_OK

答案2

你可以使用正则表达式进行 ip 检查,如下所示

\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
 (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
 (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
 (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

https://www.regular-expressions.info/ip.html

相关内容