/boot/grub/grub.conf のカーネルで始まる (空白を無視する) すべての行を検索し、すべての行をチェックして行のどこかに「nousb」があるかどうかを確認する inspec コントロールを作成しようとしています。nousb が見つからない場合は失敗を返したいと思います。
私の問題は、複数の行がカーネルで始まる場合に、grep から複数の stdout を取得/説明する方法を理解できないことです。.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要件がないにもかかわらず、最初のものが探していたものと一致したため、テストは合格と見なします。