Скрипт проверяет по крону каждые 1 минуту хеш каталога /var/www/mikbill с исключениями динамических файлов и если сумма md5 изменилась, то отсылает сообщение в чат telegram

Создаем скрипт

mkdir -p /var/mikbill/custom_scripts/md5
cd /var/mikbill/custom_scripts/md5
nano md5.sh
#!/bin/bash
server_name="demo 10.10.10.10";
TOKEN="231423444444444444335555555555555555555555"
CHAT_ID="-444444444444444444"
#SOCKS="--socks5-hostname 10.10.10.10:1080"

HOME_DIR=$(cd $(dirname $0)&& pwd)
cd /var/www/mikbill

filename_stat=$HOME_DIR/hash_stat
read data_stat < $filename_stat
data_stat=$(echo $data_stat | head -n 1 | cut -c -20)
md5_stat=$(find ./stat -not -path "*sys/mrtg_users*" -not -path "*app/log*" -type f -exec md5sum {} \; | sort -k 2 | md5sum)
md5_stat=$(echo $md5_stat | head -n 1 | cut -c -20)
if [ "$data_stat" != "$md5_stat" ];then
MESSAGE_STAT="$server_name изменился hash каталога stat"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
curl $SOCKS -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE_STAT" >/dev/null
echo -n $md5_stat > $filename_stat

files_stat=$(find ./stat -not -path "*sys/mrtg_users*" -not -path "*app/log*" -type f -mmin -5)
MESSAGE_STAT2="$server_name измененные файлы: $files_stat"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
curl $SOCKS -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE_STAT2" >/dev/null
fi

filename_admin=$HOME_DIR/hash_admin
read data_admin < $filename_admin
data_admin=$(echo $data_admin | head -n 1 | cut -c -20)
md5_admin=$(find ./admin -not -path "*scripts/date_log.txt*" -not -path "*scripts/gpon*" -not -path "*gpon/log*" -not -path "*mbp/datas*" -not -path "*sys/mrtg*" -not -path "*scripts/log.txt*" -not -path "*admin/app/log*" -not -path "*_own_scripts*" -not -path "*store/switches*" -not -path "*sms_log.txt*" -not -path "*mikbill_update.log*" -not -path "*admin/*.xls" -type f -exec md5sum {} \; | sort -k 2 | md5sum)
md5_admin=$(echo $md5_admin | head -n 1 | cut -c -20)
if [ "$data_admin" != "$md5_admin" ];then
MESSAGE_ADMIN="$server_name изменился hash каталога admin"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
curl $SOCKS -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE_ADMIN"
echo -n $md5_admin > $filename_admin

files_admin=$(find ./admin -not -path "*scripts/date_log.txt*" -not -path "*scripts/gpon*" -not -path "*gpon/log*" -not -path "*mbp/datas*" -not -path "*sys/mrtg*" -not -path "*scripts/log.txt*" -not -path "*admin/app/log*" -not -path "*store/switches*" -not -path "*sms_log.txt*" -not -path "*mikbill_update.log*" -not -path "*admin/*.xls" -type f -mmin -5)
MESSAGE_ADMIN2="$server_name измененные файлы: $files_admin"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
curl $SOCKS -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE_ADMIN2"
fi

server_name= - Заменить на свое имя и ip

TOKEN - Заменить на свой токен telegram

CHAT_ID - Заменить на свой chat id

(Как получить токен и chat id есть много статей в интернете)

Даем права на запуск

chmod +x md5.sh

Настраиваем время запуска в кроне

mcedit /etc/crontab
*/1 * * * * root /var/mikbill/custom_scripts/md5/md5.sh > /dev/null 2>&1
  • billing/howto/md5_to_telegram_v2.txt
  • Последние изменения: 4 месяц (-ев) назад
  • — Дмитрий Якушко