여러 변수에 대한 조건(IP 주소 확인)

여러 변수에 대한 조건(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이 3과 같은 잘못된 IP 형식을 입력하면 다음과 1337.-135.abcxyz.!@#@#/12같은 오류 메시지가 인쇄됩니다. Error: wrong IP format...etc.

답변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

관련 정보