escenarios de uso:
Después de la instalación del sistema operativo se haya completado, ejecute el siguiente script, registre el valor de comando md5, cuando el comando se modifica usando la secuencia de comandos de nuevo para comprobar que funciona.
Registrar ubicación para el directorio principal del usuario el archivo siguiente .UserCheckCom.txt (hay un punto, es un archivo oculto, nota)
Modo de empleo:
1. Registrar el comando actual:sh CheckCommDDCW.sh
2. Agregar comando o un comando de grabación a modificar (palabra clave complemento puede ser reemplazado por cualquier cadena no vacía):sh CheckCommDDCW.sh add
Código es el siguiente:
Descargar git: https://codeload.github.com/ddcw/shell/zip/master
#!/bin/env bash
#write by ddcw
#https://cloud.tencent.com/developer/column/6121
#scriptname:CheckCommDDCW.sh
begintime=`date +%s`
file_name=~/.UserCheckCom.txt
new_comm_n=0
change_comm_n=0
new_comm=""
change_comm=""
[ -f ${file_name} ] || touch ${file_name}
for i in $(compgen -c)
do
if which $i >/dev/null 2>&1
then
md5_n=$(md5sum $(which $i) | awk '{print $1}')
if cat ${file_name} | grep "\#$i\#" >/dev/null 2>&1
then
# echo $(cat ${file_name} | grep "\#$i\#")
md5_o=$(cat ${file_name} | grep "\#$i\#" | tail -1 | awk '{print $NF}')
if [ "${md5_n}" != "${md5_o}" ]
then
#echo -e "COMMD \033[1;41;33m $i \033[0m may be Changed: old_MD5: ${md5_o} new_MD5: ${md5_n}"
[ -z $1 ] || echo -e "#${i}# \t $(date +%Y%m%d-%H:%M:%S) \t ${md5_n}" >> ${file_name}
change_comm_n=$[ ${change_comm_n} + 1]
change_comm="${change_comm} ${i}"
fi
else
if [ "${i}" != '[' ]
then
new_comm_n=$[ ${new_comm_n} + 1]
new_comm="${new_comm} ${i}"
#echo -e "\033[32;40m$i \033[0m"
echo -e "#${i}# \t $(date +%Y%m%d-%H:%M:%S) \t ${md5_n}" >> ${file_name}
fi
fi
fi
done
echo ""
if [ ${new_comm_n} -gt 0 ]
then
echo -e "\033[31;40m Total Add ${new_comm_n} commd \033[0m"
echo "${new_comm}"
else
echo -e "\033[32;40m No Command Added ,It's Seccurity!\033[0m\n"
fi
if [ ${change_comm_n} -gt 0 ]
then
echo -e "\033[31;40m Total Changed ${change_comm_n} commd \033[0m"
echo "${change_comm}"
else
echo -e "\033[32;40m No Command Changed ,It's Seccurity!\033[0m"
fi
endtime=`date +%s`
costm=`echo ${begintime} ${endtime} | awk '{print ($2-$1)/60}'`
echo -e "\n\033[32;40m `date +%Y%m%d-%H:%M:%S` cost ${costm} minutes\033[0m"