Advertisement
D0cEvil

Bash - File hash control

Jan 4th, 2023
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.30 KB | Cybersecurity | 0 0
  1. #!/bin/bash
  2.  
  3. ##### Переменные #####
  4.  
  5. BASE_DIR="/var/opt/usr"
  6. BASE_FILE="key.txt"
  7. LIST_DIR="list"
  8. LIST_FILE="control.list"
  9. BACKUP_DIR="backup"
  10.  
  11. ##### ЕСЛИ ПЕРВЫЙ ЗАПУСК, ТО ######
  12. ##### Проверка наличия директорий и файлов #####
  13.  
  14. #Наличие директории#
  15.  
  16. if ! [ -d $BASE_DIR ]; then
  17.         clear
  18.         echo
  19.         echo "Создание директорий..."
  20.         mkdir -p $BASE_DIR
  21.         mkdir -p $BASE_DIR/$LIST_DIR
  22.         mkdir -p $BASE_DIR/$BACKUP_DIR
  23. fi
  24.  
  25. #Наличие файла#
  26.  
  27. if ! [ -f $BASE_DIR/$BASE_FILE ]; then
  28.  
  29.     echo
  30.     echo 'Создание файла БД...'
  31.  
  32.     touch $BASE_DIR/$BASE_FILE
  33.  
  34.     echo
  35.     echo 'Создание файла списка...'
  36.  
  37.     touch $BASE_DIR/$LIST_DIR/$LIST_FILE
  38.  
  39.     echo
  40.     echo 'Вам необходимо заполнить файл-список!'
  41.  
  42.     exit 0
  43.  
  44. fi
  45.  
  46. filesize1=$(stat -c%s "$BASE_DIR/$BASE_FILE")
  47. filesize2=$(stat -c%s "$BASE_DIR/$LIST_DIR/$LIST_FILE")
  48.  
  49. if [ $filesize1 -eq 0 ]; then
  50.     if [ $filesize2 -eq 0 ]; then
  51.  
  52.         clear
  53.         echo
  54.         echo "Вам необходимо заполнить файл-список!"
  55.         echo
  56.         exit 0
  57.  
  58.     else
  59.         echo
  60.         echo "Рассчет контрольных сумм файлов"
  61.         echo
  62.  
  63.         ##### Считываем файлы и пишем в БД #####
  64.  
  65.         FILE=$BASE_DIR/$LIST_DIR/$LIST_FILE
  66.  
  67.         while read line; do
  68.             CONT_SUMM=`cksum "$line"|awk '{print $1}'`
  69.             echo "$line $CONT_SUMM" >> $BASE_DIR/$BASE_FILE
  70.  
  71.             ##### Делаем резервные копии. Это только для себя и небезопасно совсем!!!!!!!!!! ###
  72.  
  73.             cp $line $BASE_DIR/$BACKUP_DIR
  74.  
  75.         done < $FILE
  76.  
  77.         echo "Готово!"
  78.         echo
  79.  
  80.     fi
  81. fi
  82.  
  83. ##### Проверка контрольной суммы, вывод сообщения #####
  84.  
  85. FILE=$BASE_DIR/$LIST_DIR/$LIST_FILE
  86. FILE2=$BASE_DIR/$BASE_FILE
  87.  
  88. while read line; do
  89.  
  90.     C1=`cksum "$line"|awk '{print $1}'`
  91.  
  92.         while read line2; do
  93.             L=`echo "$line2"|awk '{print $1}'`
  94.            
  95.             if [ $line = $L ]; then
  96.  
  97.                 C2=`echo "$line2"|awk '{print $2}'`
  98.  
  99.                 if ! [ $C1 -eq $C2 ]; then
  100.                     echo
  101.                     echo "ВНИМАНИЕ! Изменение контрольной суммы файла $line"
  102.                 fi
  103.             fi
  104.         done <$FILE2
  105. done < $FILE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement