在日志文件更改时触发shell脚本

时间:2017-02-02 13:21:15

标签: linux shell xrdp

我希望在xrdp会话开始和结束时触发命令,如果/var/log/xrdp.log文件在最后10分钟内启动了会话更新,我想触发一个shell脚本。< / p>

示例:会话登录触发器。

[root@CentOS73-RDPDemo 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

示例:会话注销触发

[root@CentOS73-RDPDemo 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

1 个答案:

答案 0 :(得分:0)

编写一个脚本(比如main.sh),检查文件中是否有任何更新(var/log/xrdp.log)。如果文件中有任何更新,请调用所需的脚本(trigger-login.shtrigger-logout.sh)。

您可以使用statmd5sum

执行此操作

参考示例(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作业,每10分钟运行一次main.sh脚本。