Linux

多個變數的條件(驗證 IP 地址)

  • August 23, 2019

我有 5 個變數

前任:

a, b, c, d, x, 

如果它們不在 1-255 之間(x 為 1-32),則回顯錯誤消息,或者輸入隨機文本或字元也回顯錯誤消息,我該怎麼做

經驗:

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…等

我們可以使用 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

您可以使用正則表達式進行 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

引用自:https://unix.stackexchange.com/questions/536985