Требование: предупреждение, если есть какой-либо пакет, установленный или удаленный на сервере Ubuntu.
Для этого требования я пытаюсь использовать InotifyWait, чтобы постоянно контролировать dpkg.log, если есть какие-либо изменения, использующие рисунок Regex для установки и удаления пакета и предупреждения на основе этого.
Как я могу принять модифицированный контент файла, который контролируется inotifywait в другой файл или хранить его в переменной, чтобы я мог применить некоторое регулярное выражение и предупреждение на основе этого?
Пожалуйста, помогите мне, как можно Я делаю это или есть в том, что я могу добиться этого требования, используя любой другой инструмент.
Это то, что я пытался, но это не работает.
#!/bin/sh
while inotifywait -e modify /var/log/dpkg.log; do
if tail -n1 /var/log/dpkg.log | grep installed; then
// alert script
fi
done
Этот скрипт с использованием Diff
работает :
#!/bin/bash
# Save contents of dpkg.log
last_content=$(</var/log/dpkg.log)
# Loop inotifywait
while inotifywait -e modify /var/log/dpkg.log; do
# Check diff between dpkg.log and last saved content.
# Use grep to filter lines not interesting
# save in a variabler called "diff".
diff=$(diff /var/log/dpkg.log <(printf '%s' "$last_content") | grep '^<' | grep "status installed")
# Check if the command to check "diff" succeeded ($? == 0)
# if yes, run the alert:
if [ $? -eq 0 ]; then
echo "$diff"
notify-send "$(printf '%s' "$diff" | grep -Po "status installed \K.*") has been installed"
fi
# Save contents of dpkg.log
last_content=$(</var/log/dpkg.log)
done
вместо Notify-Edit
, вы, конечно, можете использовать любой другой метод для предупреждения.