Linux sed 명령이 일치하는 IP 주소를 찾도록 만드는 방법

Linux sed 명령이 일치하는 IP 주소를 찾도록 만드는 방법

내 Linux 시스템에서 실행 listdata.sh결과는 다음과 같습니다.

{
  "111.111.111.111:11957": 1,
  "222.222.222.222:9999": 1,
  "333.333.333.333:9999": 1,
  "[::]:0": 1,
  "444.444.444.444:9999": 1,
  "d6iiugkkjfgt3kt2z.onion:47500": 1,
  "555.555.555.555:11957": 1,
  "666.666.666.666:9999": 1,
  "nv52misrzsuyre6.onion:47509": 1,
  "777.777.777.777:9999": 1,
  ":9999": 1,
  "[::]:0": 1
}

내 IP가 222.222.222.222
Linux 명령을 실행할 때 확인해야 합니다.

"어떤 명령" "222.222.222.222" "내 IP가 발견되면" 아무것도 하지 않습니다 "찾지 못하면" "뭔가를 하세요"

데이터 목록은 때때로 주소로 이동하고 때로는 IPv6도 표시합니다.

답변1

IP 주소 222.222.222.222를 찾을 수 없는 경우 bash다음 스크립트를 작성하여 작업을 수행할 수 있습니다.

#!/bin/bash
listdata.sh | grep "\"222\.222\.222\.222:"  > /dev/null
if [ $? -ne 0 ]   # if grep not successful 
then
    ... do some actions
fi

답변2

@Rui F Ribeiro에게 감사드립니다. 이것이 내 마지막 스크립트입니다.

#!/bin/bash
listdata.sh | grep "\"222.222.222.222:"  > /dev/null
if [ $? -ne 0 ]   # if grep not successful 
then
        addIPtolist.sh > /dev/null
        echo "`date -u` Not in list"  >> /var/log/listdata.log
        exit
fi
        echo "`date -u` OK Still in list"   >> /var/log/listdata.log

이것은 내 루프 배쉬입니다

#!/bin/bash
while true
do
        listdata.sh
        sleep  60
done

관련 정보