如何将openssl s_client -connect stdout和stderr发送到/ dev / null

时间:2017-11-08 10:55:34

标签: bash openssl stdout stderr

我有以下bash脚本,用于检查Apache中是否存在给定的SSL客户端证书。

#!/bin/bash
cert=$1
echo | openssl s_client -connect localhost:443 | grep -q $cert > /dev/null 2>&1
if [ $? -eq 0 ]; then
  echo $cert "client cert already exist"
else
  #Create a new client cert in Apache
fi

即使我将openssl命令的stdout和stderr发送到/ dev / null,该命令仍然向控制台显示以下错误!

深度= 3 C = OM,O = ORG,OU =对于分段,CN = ROOT CA - 1验证错误:num = 19:证书链中的自签名证书验证返回:0 / C = om / O = o / CN = MY_CERT DONE

1 个答案:

答案 0 :(得分:0)

问题在于,您实际上并没有将openssl的stderr发送到/dev/null,而是发送grep

要将openssl的stderr发送到/dev/null,您需要将重定向放入与openssl调用相同的管道部分。当您使用grep -q时,grep上不需要任何I / O重定向。

这样做:

echo | openssl s_client -connect localhost:443 2>/dev/null | grep -q $cert