CVE のリストをループして、rpm -qa --changelog と比較し、RPM 名と CVE grep 出力を出力しようとしていますが、そこに到達できません。
リストは列形式です。
出力を次のようにしたい: RPM : CVE 出力
rpm -q $RPM --changelog|grep $CVE
ここで、$RPM は rpm -qa から取得され、$CVE は cat CVE.list から取得されます
CVE のリストをループして、rpm -qa --changelog と比較し、RPM 名と CVE grep 出力を出力しようとしていますが、そこに到達できません。
リストは列形式です。
出力を次のようにしたい: RPM : CVE 出力
rpm -q $RPM --changelog|grep $CVE
ここで、$RPM は rpm -qa から取得され、$CVE は cat CVE.list から取得されます
以下は滑らかなワンライナーではありませんが、機能します。――ジョン・ホール
#!/bin/ksh
#
# Show which installed RPM's contain specified CVE's.
#
echo "\
CVE-2011-3348
CVE-2012-0031
" | \
while read CVE
do
case $CVE in
"") break ;;
esac
echo; echo "Processing [$CVE] ... "
rpm -qa | \
while read RPM
do
rpm -q --changelog $RPM | grep $CVE > /dev/null
case $? in
0) echo "RPM: $RPM "
rpm -q --changelog $RPM | grep $CVE
;;
esac
done
done