2017-02-02 9 views
1

Я ищу, чтобы запускать команду в начале и в конце сеанса xrdp, если файл /var/log/xrdp.log получить обновление с сеансом, запущенным за последние 10 минут, я хотел бы вызвать сценарий оболочки.Trigger shell Сценарий при изменении файла журнала

Пример: Триггер входа в систему.

[[email protected] sp]# cat trigger-login.sh 

#!/bin/bash 

if [ $(($(date +%s) - $(date +%s -r /var/log/xrdp.log))) -le 180 ]; then 
    tail -n 4 /var/log/xrdp.log | grep -i "socket: 11" 
    sh /usr/src/sp/sql-login.sh 
fi 

Пример: Session Выход триггер

[[email protected] sp]# cat trigger-logout.sh 

#!/bin/bash 

if [ $(($(date +%s) - $(date +%s -r /var/log/xrdp.log))) -le 180 ]; then 

    tail -n 4 /var/log/xrdp.log | grep -i "socket: 12" 
    sh /usr/src/sp/sql-logout.sh 
fi 
+0

Вы хотите запустить trigger-login.sh и trigger-logout.sh, если в последние 10 минут в файле журнала есть обновление? – Rocoder

+0

Да, я хотел бы вызвать файл оболочки, если в моем файле журнала есть какое-либо обновление. Как и для каждого сеанса xrdp, мой журнал генерирует определенную запись. Если сценарий оболочки отображает последние 10 минут активности по определенному контенту и отправляет обновление в мою БД, это поможет отслеживать –

ответ

0

Написать скрипт (например main.sh), который проверяет, есть ли какое-либо обновление в файле (var/log/xrdp.log). Если в файле есть какое-либо обновление, вызовите нужные сценарии (trigger-login.sh и trigger-logout.sh).

Вы можете сделать это с помощью stat или md5sum

Пример для отсчета (main.sh).

#!/bin/bash 

touch /tmp/checkMD5 

nchksum=`md5sum a.out | awk -F " " '{print $1}'` 
ochksum=`cat /tmp/checkMD5` 

if [ "$nchksum" == "$ochksum" ]; then 
     echo "both are same" 
else 
     sh trigger-login.sh 
     sh trigger-logout.sh 
fi 

echo $nchksum >/tmp/checkMD5 

Запланировать crontab работа, которая будет запускать скрипт main.sh через каждые 10 минут.