#!/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