2017-02-02 70 views
1

我正在尋找觸發xrdp會話啓動和結束的命令,如果/var/log/xrdp.log文件在最近10分鐘啓動會話時得到更新,我想觸發一個shell腳本。在日誌文件更改時觸發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 

舉例:會話註銷觸發器

[[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

如果日誌文件中最近10分鐘內有更新,您是否想運行trigger-login.sh和trigger-logout.sh? – Rocoder

+0

是的,如果我的日誌文件中有更新,我會觸發shell文件。就像每個xrdp會話一樣,我的日誌會生成特定的條目。如果shell腳本抓取特定內容的最後10分鐘活動並將更新發送到我的數據庫將有助於跟蹤 –

回答

0

寫一個腳本(比如main.sh),它會檢查是否在文件中的任何更新(var/log/xrdp.log)。如果文件中有任何更新,請致電您所需的腳本(trigger-login.shtrigger-logout.sh)。

可以使用用於參考(main.sh)statmd5sum

實施例做到這一點。

#!/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作業,它將每10分鐘運行一次main.sh腳本。