我正在写一个简单的脚本来检查一个网站的证书是否有效。但是,当我试图在终端中运行代码时,我会收到一条错误消息,说明找不到命令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
发布于 2019-10-04 09:39:28
请注意错误消息中的额外空间:
./check-certificates.sh: line 6: openssl: command not found
这意味着shell正在寻找的命令不是openssl
,而是openssl
,可能具有不可中断的预分段空间。
您需要编辑脚本,以确保openssl
前的空间是“正常”空间,甚至是删除它。
有关类似的实例,请参阅为什么这个命令不起作用:“ps aux \ grep xscreensaver”,并提供更多信息。
https://unix.stackexchange.com/questions/545076
复制相似问题