I Я понял это. Я могу использовать цель LOG
для правила iptables в сочетании с - log-prefix
и использовать скрипт, выходящий из cron, для grep для префикса журнала из syslog / dmesg, чтобы найдите самый последний пакет, соответствующий правилу iptables, а затем выполните произвольные команды.
Ответ Марка, похоже, немного не соответствует требованиям ОП.
Попробуйте использовать этот лайнер в командной строке вашего терминала. Он проще и, наверное, надежнее.
[ $(find /path/to/directory/. -maxdepth 1 -type f -name MAIN.TXT -daystart -mtime +1) ] \
&& printf "YES" > /full/path/to/directory/MAIN.TXT
Пояснение: сначала посмотрите на более крупные блоки одного вкладыша, а затем углубитесь в каждый блок.:
[ block1 ] && block2
[ block1 ]
(с пробелами! )— булев логический оператор, эквивалентный оператору test
, встроенному -в [ block1 ]
является ИСТИНА. Если он ничего не возвращает, как в ""
, то результат предыдущего теста — ЛОЖЬ. &&
в A && B
отражает тот факт, что B выполняется, если статус выхода A равен 0
или TRUE
. Таким образом, если [ block1 ]
выполняется как TRUE, то блок 2 также выполняется. $( )
. Это замена команды. Все, что находится внутри скобок, выполняется, и вывод заменяет команду. Вот почему это называется «заменой команды». regular file
MAIN.TXT
/path/to/directory/.
-maxdepth 1
)-mtime +1
)начиная с текущего времени(-daystart
). Без -daystart
ваш поиск будет искать файлы, измененные более 24 часов назад, но начиная отсчет назад с вчерашнего 0-часового времени . [ $(find /directory -type f -mtime +1 | wc -l) -gt 0 ] && echo 'YES' > /directory/MAIN.txt