utils/rpm_resign.sh

#!/bin/bash
#得到当前脚本执行的路径
CUR_DIR=$(cd `dirname $0`; pwd)
TARGET=$1
#-d 表示不是目录的话。因此这里是判断第一个参数$1 不是目录的话就通过exit 退出了
if [ ! -d "${1}" ] ; then
    echo "Input must be one directory!"
    exit -1
fi
#通过$得到cat执行的结果
passphrase=$(cat /home/KEY_PASSPHRASE)

############################################################################
# To verify whether the rpm package has been signed successfully or not
############################################################################
#定义一个函数
verify_rpm_sign() {
    filename=$1
  #对package执行rpm -qpi,在输出的log中看是否存在Signature 这个字符串
    rpm -qpi ${filename} | grep Signature
	#这个if条件中又执行一次,这个在输出的字符串中查找Signature或者none,如果都没有找到就退出
	#这样的话,感觉if前面一句话就没有必要执行
    if [ ! -z "$(rpm -qpi ${filename} | grep Signature | grep none)" ] ; then
        echo "Fail to sign ${filename}"
        exit 1
    fi
}

############################################################################
# Begin to sign rpm packages
############################################################################
#通过for循环对TARGET目录下的所有rpm 文件执行rpm --resign。在执行这个命令的时候需要输入key,因此咋合理采用
#在for循环中插入expect命令
for filename in ${TARGET}/*.rpm
do
expect <<-END
        set timeout -1
        spawn rpm --resign ${filename}
        expect {
                "Enter pass phrase:" {send "${passphrase}\r"}
                timeout {send_user "Enter pass phrase timeout\n"}
        }
        expect eof
END
#调用前面的函数检查rpm --resign  是否成功在package中加入Signature
   verify_rpm_sign ${filename}
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值