我正在尝试遍历一组CVE,与rpm -qa --changelog进行比较,并输出RPM名称和CVE grep输出,但就是达不到目的。
该列表采用列格式。
我希望输出是这样的: RPM : CVE输出
rpm -q $RPM --changelog|grep $CVE其中$RPM来自rpm -qa,$CVE来自cat CVE.list
发布于 2014-09-26 01:39:53
下面不是一个圆滑的一行,但它是有效的。--约翰·霍尔
#!/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发布于 2013-08-14 05:33:47
试试像这样的东西
rpmout=$(rpm -q $RPM --changelog)
for vuln in $(cat "$CVE")
do
cvegrep=$( rpm -q "$RPM" --changelog | grep "$vuln")
echo -en "$rpmout : $cvegrep\n"
done编辑:根据特定的输出需求进行编辑。这可能需要进一步编辑,具体取决于CVE文件格式是什么,以及rpm命令的输出是什么。
https://stackoverflow.com/questions/18219485
复制相似问题