쉘 스크립트를 사용하여 파일에 IP 주소가 있는지 어떻게 확인할 수 있습니까?

쉘 스크립트를 사용하여 파일에 IP 주소가 있는지 어떻게 확인할 수 있습니까?

일부 출력을 생성하는 스크립트가 있습니다. 다음과 같은 IP 주소에 대한 출력을 확인하고 싶습니다.

159.143.23.12
134.12.178.131
124.143.12.132

if (IPs are found in <file>)
then // bunch of actions //
else // bunch of actions //

fgrep좋은 생각 인가요 ?

bash를 사용할 수 있습니다.

답변1

예, 원하는 대로 사용할 수 있는 옵션/도구가 많이 있습니다. 방금 이것을 시도했는데 작동합니다.

ifconfig | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"

따라서 grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"grep을 사용하여 출력에서 ​​IP 주소를 가져올 수 있습니다.

답변2

예를 들어 파일이 호출된 경우 ips다음과 같이 작성할 수 있습니다.

while read -r ip
    do
        if [[ $ip == "$1" ]]; then
            shift
            printf '%s\n' 'action to take if match found'
        else
            printf '%s\n' 'action to take if match not found'
        fi
    done < ips

그런 다음 스크립트에 따라 매개변수를 전달할 수 있습니다.

./myscript 159.143.23.12 134.12.178.131 124.143.12.132 124.143.12.132

답변3

이 답변을 바탕으로 답변을 시작합니다.

예, 원하는 대로 사용할 수 있는 옵션/도구가 많이 있습니다. 방금 이것을 시도했는데 작동합니다.

grep -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" a를 구성하면 grep -oE "\b를 사용할 수 있습니다. ( [0- 9]{1,3}.){3}[0-9]{1,3}\b" 출력에서 ​​IP 주소를 가져옵니다.

답변을 전체 길이 IPv6 등으로 변환합니다.

fgrep -oE "\b([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}\b" -- file

/nnn을 유지하려는 경우(있는 경우):

fgrep -oE "\b([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}(/[0-9]{1,3}){0,1}\b" -- file

"::"을 포함하는 IPv6의 축약 버전도 있습니다.

더 많은 IPv6 답변을 보려면 여기에서 확인할 수 있습니다. https://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses

답변4

ip -4  addr show eth1 |  grep -oP '(?<=inet\s)\d+(\.\d+){3}'

관련 정보