从 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) 则打开。

根据 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

相关内容