如何用awk修改脚本提取JKS文件证书别名与有效期并格式化输出
提取JKS证书别名与有效期并格式化输出
我帮你调整了脚本,用awk来处理keytool的输出,完美实现你要的TAB分隔格式,别名对应的多个证书会自动用空字符串填充别名位置来对齐。直接用下面的命令就行:
for f in *.jks; do if [ -f "$f" ]; then # 如果你JKS有密码,把-storepass ''改成你的密码,比如-storepass 123456 keytool -list -v -keystore "$f" -storepass '' 2>/dev/null | awk ' # 捕获别名名称,存到变量里 /Alias name:/ { alias = substr($0, 13); # 跳过"Alias name: "这12个字符 next } # 处理有效期行,拆分出起止日期 /Valid from:/ { # 用分隔符拆分字符串,拿到生效和过期日期 split($0, date_parts, /Valid from: | until: /) # 用TAB分隔输出,后续同一别名的证书自动留空别名字段 printf "%s\t%s\t%s\n", (alias ? alias : ""), date_parts[2], date_parts[3] alias = "" # 重置别名,确保下一条证书输出空别名 } ' fi done
几点说明:
- 我把原来的
echo "" |换成了-storepass '',这样不用交互式输入密码(如果你的JKS没设密码的话),同时把错误输出(2>/dev/null)丢掉,避免无关信息干扰结果 - 循环只针对
.jks后缀的文件,比原来的*更精准,不会处理目录里的非证书文件 - 如果你的JKS设置了密码,只需要把
-storepass ''改成实际的密码字符串就行,比如-storepass mySecurePass123
内容的提问来源于stack exchange,提问作者Samuel Rodriguez
相关产品推荐
相关产品推荐

