我正在尝试创建一个检查控件,该控件在 /boot/grub/grub.conf 中以内核开头的每一行(并忽略空格)进行搜索,然后检查每一行以查看它是否在该行的某处有“nousb”。如果找不到 nousb,我希望它返回失败。
我的问题是,如果不止一行以内核开头,我无法找到一种从 grep 获取/描述多个标准输出的方法。这是我可以使用 .each 完成的事情吗?这是我的代码:
control 'os-disable-usb-pcmcia' do
impact 0.5
title 'Disable USB and PCMCIA Devices'
desc "ensure default kernel in grub has 'nousb' option"
output = command('egrep "^[[:space:]]*kernel" /boot/grub/grub.conf')
describe output do
its('stdout') { should match /^\s*kernel[^#]*nousb\b/ } # match nousb anywhere in the 'kernel' line
end
end
编辑澄清。
假设我的 conf 文件中有这些行
kernel 1 nousb
kernel 2
kernel 3
kernel 4
测试将认为它通过了,因为尽管多个内核行没有 nousb 要求,但第一个匹配它正在寻找的内容。