csv에서 여러 포트로 IP 확인

csv에서 여러 포트로 IP 확인

csv 파일의 포트를 이용하여 간단하게 IP 주소를 확인할 수 있나요?

내 CSV에는 이 형식의 IP가 수백 개 있습니다.

123.123.321.321:80,22,443
223.223.321.321:80,22,443

bash 스크립트를 통해 이 순서와 형식으로 IP를 확인하여 이를 자동화할 수 있습니까?

답변1

while IFS=: read -r ip ports; do
   savIFS=$IFS
   IFS=,; set -f; set -- $ports; r=
      while case $# in 0 ) break ;; esac; do
         nc "$ip" "$1" 1>/dev/null 2>&1
         r=${r:-$ip:}${r:+,($?)}$1
         shift
      done
      echo "$r"
   IFS=$savIFS
done < yourcsvfile

이제 0이 아닌 값에 포함된 포트는 모두 닫히고, (0)은 열려 있습니다.

OP 요청에 따라 IP별로 상태 메시지를 생성합니다.

while IFS=: read -r ip ports; do
   savIFS=$IFS
   IFS=,; set -f; set -- $ports
      for port
      do
         nc "$ip" "$port" 1>/dev/null 2>&1
         case $? in
            0 ) status="PASS" ;;
            * ) status="FAIL" ;;
         esac
         echo "$ip:$port - $status"
      done
   IFS=$savIFS
done < yourcsvfile

관련 정보