Linux
多個變數的條件(驗證 IP 地址)
我有 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.!@#@#/12
3,它會列印出錯誤消息: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