File: //usr/sbin/khotfix-view
#!/bin/bash
run=0
all=0
kpatch=0
alihotfix=0
kernel="`uname -r`";
hotfix_prefix="/var/khotfix/${kernel}";
function usage(){
echo "Usage:";
echo "khotfix-view [--run|-r]"
echo "khotfix-view --kpatch"
echo "khotfix-view --alihotfix"
echo "khotfix-view [--all|-a]"
echo "khotfix-view --run --[all/kpatch/alihotfix]"
echo "khotfix-view --id={khotfix_id}"
echo ""
echo "Options:"
echo " --id"
echo ""
}
function parse_args(){
ARGS=`getopt -l id:,run,all,alihotfix,kpatch,help -o rah -- "$@" 2>/dev/null` || { usage; exit 1; }
eval set -- "${ARGS}"
while [ -n "$1" ]
do
case "$1" in
-r|--run)
run=1
;;
--id)
khotfix_id="$2"
if [ -z "${khotfix_id}" ]; then
usage;
exit 1;
fi
shift
;;
-a|--all)
all=1
;;
--alihotfix)
alihotfix=1
;;
--kpatch)
kpatch=1
;;
-h|--help)
usage
exit 1;
;;
--)
shift
break
;;
esac
shift
done
if [ ${kpatch} -eq 1 -a ${alihotfix} -eq 1 ]; then
usage;
exit 1;
fi
if [ ${all} -eq 0 -a ${kpatch} -eq 0 -a ${alihotfix} -eq 0 ]; then
all=1;
fi
}
parse_args "$@";
if [ ${khotfix_id} ]; then
path="${hotfix_prefix}/${khotfix_id}"
if [ -e "${path}/kpatch-${khotfix_id}.ko" ]; then
echo -e "[kpatch]:\c";
elif [ -e "${path}/khotfix-${khotfix_id}.ko" ]; then
echo -e "[alihotfix]:\c";
fi
if [ -e "${path}/description" ]; then
echo -e " $(cat ${path}/description)";
else
echo "";
fi
if [ -e "${path}/patch" ]; then
echo "";
echo "$(cat ${path}/patch)";
fi
exit 0;
fi
if [ ! -e "${hotfix_prefix}" ]; then
exit 0;
fi
for id in `ls "${hotfix_prefix}"`; do
path="${hotfix_prefix}/${id}";
if [ ${run} -eq 1 ]; then
lsmod | grep "${id}">/dev/null || continue;
fi
if [ ${all} -eq 1 ]; then
echo -e "${id}\c";
if [ -e "${path}/kpatch-${id}.ko" ]; then
echo -e " [kpatch] :\c";
elif [ -e "${path}/khotfix-${id}.ko" ]; then
echo -e " [alihotfix]:\c";
fi
if [ -e "${path}/description" ]; then
echo -e " $(cat ${path}/description)";
else
echo "";
fi
elif [ ${kpatch} -eq 1 ]; then
if [ -e "${path}/kpatch-${id}.ko" ]; then
echo -e "${id}\c";
echo -e " [kpatch]:\c";
if [ -e "${path}/description" ]; then
echo -e " $(cat ${path}/description)";
else
echo "";
fi
fi
elif [ ${alihotfix} -eq 1 ]; then
if [ -e "${path}/khotfix-${id}.ko" ]; then
echo -e "${id}\c";
echo -e " [alihotfix]:\c";
if [ -e "${path}/description" ]; then
echo -e " $(cat ${path}/description)";
else
echo "";
fi
fi
fi
done