我在 Serverspec 测试中进行了以下检查:
openssl_latest_version = 'OpenSSL 1.0.2h 3 May 2016'
describe command('openssl version') do
its(:stdout) { should match openssl_latest_version }
end
有没有办法自动获取最新官方发布的 OpenSSL 在执行时返回的字符串?即根据某些调用openssl version
自动设置。openssl_latest_version
curl
我的意图是,如果安装的版本晚于当前发布的版本,则测试应该失败OpenSSL与运行测试时一样最新,但没有人工更新参数。
我不要想要根据特定操作系统版本的包管理器中可用的版本进行检查,我不想安装最新版本,我只想测试失败当运行的版本与最近发布的版本不同时。
答案1
下面是一个可以实现这一功能的糟糕的小型 shell 脚本:
$ lynx -dump https://www.openssl.org/source/ |
grep -- 'https://www.openssl.org/source/openssl-.*.tar.gz$' |
awk '{print $2}' |
sort -r |
grep -v -- '-fips-' |
grep -v -- '-pre' |
head -n1 |
sed -n -- 's_^https://www.openssl.org/source/openssl-\(.*\).tar.gz$_\1_p'
截至目前,输出如下:
1.0.2h
答案2
您正在跳过链条中的几个环节。您需要根据所运行的操作系统检查包管理器中可用的最新版本。如果您管理自己的包(例如 RedHat 衍生产品的 SpaceWalk),那么这会为您的链条添加一些环节,因为您还将管理上游可用的包,因此您可以将其视为事实来源。
如果你完全脱离你的发行版所支持的 openssl 版本,直接使用 openssl 项目的最新和最好的版本,好吧,伙伴,让我们把这个地方毁掉,就像它什么都不是一样!ᕕ( ᐛ )ᕗ
你需要使用openssl 的 github 仓库,克隆并检查版本,然后编译并安装。处理依赖关系从未如此简单或者安全的!