使用bash for循环执行openssl

时间:2016-09-07 11:12:11

标签: bash

我有一个IP列表,我需要检查它们是否支持TLS1.2,我正在使用Openssl。但是,我似乎无法在Bash脚本中自动执行该过程。它只在第一个IP上执行并等待我的输入。我知道我必须添加< /dev/nullecho "x",但它没有帮助。我试过了:

for i in `cat scope`; do openssl s_client -tls1_2 -connect $i:443 < /dev/null; done

或:

for i in `cat scope`; do echo "x" | openssl s_client -tls1_2 -connect $i:443 < /dev/null; done

编辑:已解决,第443端口未在第二个IP上打开,这就是它等待的原因。

1 个答案:

答案 0 :(得分:0)

我建议使用nmap而不是s_client来检查TLS握手(并且当端口未打开时它会捕获这种情况。)

for i in `cat scope`; do 
  if nmap --script ssl-enum-ciphers -p 443 "$i" | grep "TLSv1.2" >/dev/null; then 
    echo "$i supports TLSv1.2"
  else
    echo "$i doesn't support TLSv1.2"
  fi
done