Inotify: датчик изменения файлов
Отслеживать изменения файловой системы требуется довольно часто. Например, поставив «капканы» на важные файлы можрегистрировать действия злоумышленников. Но есть и более мирные задачи. Например, в каталог /tmp время от времени телефонным сервером asterisk сбрасываются факсы в формате tif. Нужно реагиновать на эти события, отправляя изображения на электронную почту. Планировщик cron для этой задачи слишком инертертен, сам asterisk тоже e-mail'ом пользоваться не обучен, так что на выручку приходит интерфейс Linux inotify, который хорошо реализован, например, в наборе утилит inotify-tools. Вот скрипт, выполняющий описанную задачу:
На пользователей заведены почтовые ящики, соответствующие их номерам телефонов. Т.е. если факс принимается для абонента телефонной станции с номером 209, файл имеет название /tmp/209.tif и отправляется на почтовый ящик [email protected]
#!/bin/bash
while true
do
FN=`/usr/bin/inotifywait --format %f -e close_write /tmp`
IS_TIFF=`echo $FN | grep -o .tif`
if [ $IS_TIFF == ".tif" ] ; then
IP_TEST=`echo $FN | egrep -o [0-9]{3}`
echo -n "Fax for $IP_TEST..."
echo "" | mutt "[email protected]" -a "/tmp/$FN" -s "New fax"
echo ' done!'
echo "$FN" >> /tmp/asttest.log
rm -f "/tmp/$FN"
fi
done
На пользователей заведены почтовые ящики, соответствующие их номерам телефонов. Т.е. если факс принимается для абонента телефонной станции с номером 209, файл имеет название /tmp/209.tif и отправляется на почтовый ящик [email protected]
- —
- 21 декабря 2011, 23:26
- комментировать
