我有一个使用 Apache 的云设置,包含 6 台前端计算机。我安装了新的 SSL 证书。现在我想验证所有机器是否都有证书。
问题是,如果我只使用https://www.example.com/
随机分配的 IP 地址,我将能够验证其中一台计算机。DNS 以简单的循环形式返回 6 个 IP 地址之一。
我知道如何使用该/etc/hosts
文件在我的计算机上强制使用 IP 地址,但我希望有一种更简单的方法来做到这一点。curl
喜欢在域名中使用和指定 IP 地址吗?
我更喜欢将其作为命令行(wget
,,...),这样我就可以编写脚本并以自动方式验证证书的日期,并确保所有计算机都提供正确的证书curl
。open_ssl
该命令应该下载证书,以便可以在我的客户端计算机上进行检查。
Debian 提供了一种使用命令来比较 Debian 兼容版本的方法,dpkg
如下所示:
dpkg --compare-versions <version> <operator> <version>
Run Code Online (Sandbox Code Playgroud)
例如,如果你想知道给定的版本是否在 1.0 之前,那么你可以使用:
# gather VERSION from somewhere...
VERSION=0.9
if dpkg --compare-versions "${VERSION}" lt 1.0
then
echo "unacceptable version as per policy"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
基于 RPM(RedHat/Fedora)系统下的等效命令是什么?
我编写了一个 C++ 看门狗,它运行一组脚本来确定该系统是否存在问题。
代码有点啰嗦,这里就不展示了,不过相当于一个系统调用如下:
int const r(system("/bin/sh /path/to/script/test-health"));
Run Code Online (Sandbox Code Playgroud)
只有,r
当脚本因if
语句中缺少命令而失败时为 0 。脚本中有一个令人反感的地方:
set -e
[...]
if unknown_command arg1 arg2
then
[...]
Run Code Online (Sandbox Code Playgroud)
将unknown_command
明显失败,因为......它是未知的。那时脚本结束,因为我set -e
在开头有 。
但是,在这种情况下,退出代码将为 0。
在这种情况下,有没有办法让我获得退出代码 1?
即问题是检测错误而不必添加测试来知道是否unknown_command
存在。我知道该怎么做:
if ! test -x unknown_command
then
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
我的观点是,当我编写该脚本时,我希望unknown_command
在我自己安装它时存在,但是如果出现问题或有人将脚本复制到另一个系统上而没有安装所有内容,我想知道我在执行脚本。
操作系统概念 说:
在 I/O 期间,各种设备控制器在准备好服务时会引发中断。这些中断表示
- 该输出已完成,或
- 输入数据可用,或
- 检测到故障。
中断是否用于表示输出已准备好或输入已完成?
如果不是,它们是否需要以其他方式表示?
apache-httpd ×1
c++ ×1
certificates ×1
debian ×1
dpkg ×1
fedora ×1
interrupt ×1
io ×1
openssl ×1
rpm ×1
shell ×1
ssl ×1
verification ×1
version ×1