You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选签名不匹配或无签名的rpm文件并仅输出对应文件名

RPM签名不符合筛选脚本实现

直接使用以下组合命令即可满足需求,支持配合find批量处理数千个rpm文件,仅输出签名key不匹配、无签名的文件路径:

# 替换expected_key的值为你需要的目标key ID,替换find后的路径为实际rpm存放目录
find /your/rpm/directory -type f -name "*.rpm" -exec rpm -K {} + | awk -v expected_key="123456" '
# 匹配rpm文件路径行,重置状态
/:$/ {
    current_rpm = substr($0, 1, length($0)-1)
    is_valid = 0
}
# 匹配合法签名行,校验key ID
/key ID [0-9a-fA-F]+: OK/ {
    if ($7 == expected_key) is_valid = 1
}
# 匹配无签名/签名校验失败场景,直接标记无效
/NOT OK|MISSING KEYS/ {
    is_valid = 0
}
# 每个rpm校验结束后判断是否输出
/MD5 digest: OK|MD5 NOT OK/ {
    if (is_valid == 0) print current_rpm
}
'

逻辑说明

  • 用find -exec rpm -K {} +批量校验rpm签名,相比逐文件调用rpm -K性能提升数倍,处理2000个文件无压力
  • awk逐行处理校验输出,每个rpm的校验结果块独立判断:
    • 先存储当前校验的rpm路径,初始化合法标记为否
    • 只要检测到存在目标key ID的合法签名,就标记为合法
    • 只要检测到无签名、签名校验失败的日志,直接标记为不合法
    • 每个rpm校验完成后,若标记为不合法则输出对应路径

针对你给出的测试样例,执行后输出结果为:

/a/folder/rpm_invalid_signature.rpm
/a/folder/rpm_unsigned_signature.rpm

如果不需要筛选无签名的文件,删除/NOT OK|MISSING KEYS/ {is_valid = 0}这一行即可。

内容的提问来源于stack exchange,提问作者user486670

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:36:05