我正在编写一个简单的脚本来检查网站的证书是否有效。但是,当我尝试在终端中运行代码时,我收到一条错误消息,指出openssl
找不到该命令。这是代码:
if true | openssl s_client -connect www.google.com:443 2>/dev/null | \
openssl x509 -noout -checkend 0; then
echo "Certificate is not expired"
else
echo "Certificate is expired"
fi
当我尝试运行此代码时,我收到以下输出:
./check-certificates.sh: line 6: openssl: command not found
Certificate is expired
该代码运行,但它无法识别openssl
为有效命令,因此它跳过提到这一点的代码行,并默认输出“证书已过期”。
使用时sudo apt-get install openssl
我收到此消息:
...
openssl is already the newest version (1.0.2g-1ubuntu4.15).
...
所以看起来openssl
已经安装成功了。我不知道如何解决这个问题 - 有人有任何想法吗?
根据要求,以下是输出apropos openssl | grep "OpenSSL command line tool"
:
openssl (1ssl) - OpenSSL command line tool
和locate openssl | grep /usr/bin
:
usr/bin/openssl
答案1
请注意错误消息中的额外空格:
./check-certificates.sh: line 6: openssl: command not found
这意味着 shell 正在寻找的命令不是openssl
,而是 openssl
,可能预先预留了一个牢不可破的空格。
您需要编辑脚本以确保前面的空格openssl
是“正常”空格,甚至删除它。
看为什么此命令不起作用:“ps aux | grep xscreensaver”对于具有更多信息的类似实例。