atfa 发表于 2005-5-10 08:51:57

又有shell编程问题,请教大家

一个程序,每发生一笔交易就在log文件里面产生一行交易记录,格式如下:

2005-05-10 08:19:01||单位机密信息|客户机密信息|8|客户机密信息|单位机密信息|000||

大家看到了最后一列数字是000,这就是正常的,如果出现了111或者109这两个信号,那么就证明出问题啦。

现在我是tail -f log,这样,log文件的任何变化都在我的telnet上显示出来,但是每天发生万多笔交易,我不可能一直盯着屏幕啊,所以,怎样可以写一个脚本可以代替我盯着log文件,每当新的一行交易记录进入时检测这一行的最后一列是否包含111或者109,如果是,就beep的叫或者就屏幕闪,或者怎么样都可以,行不行?谢谢各位。



咦,怎么发在水园了,转到shell去。

atfa 发表于 2005-5-10 09:11:10

有没有人啊…………vimchina在哪儿啊?

zhy2111314 发表于 2005-5-10 09:32:34

zhyfly@zhyfly:~/bash$ cat log
2005-05-10 08:19:01||单位机密信息|客户机密信息|8|客户机密信息|单位机密信息|000||2005-05-10 08:19:01||单位机密信息|客户机密信息|8|客户机密信息|单位机密信息|109||zhyfly@zhyfly:~/bash$ cat log|awk -F"|" '{if($8!~/000/)print}'
2005-05-10 08:19:01||单位机密信息|客户机密信息|8|客户机密信息|单位机密信息|109||
zhyfly@zhyfly:~/bash$

MichaelBibby 发表于 2005-5-10 09:32:47

用grep就可以了呀,这个简单~ :wink:

MichaelBibby 发表于 2005-5-10 09:43:06

最简单的:

#!/usr/local/bin/bash

tail -1 logfile|grep "000">/dev/null

case $? in
        0) echo ok ;;
        1) echo wrong ;;
esac

zhy2111314 发表于 2005-5-10 09:45:37

呵呵,不错,修改一下:
#!/usr/local/bin/bash

tail -l logfile|grep "000">/dev/null

case $? in
   0) . ;;
   1) echo -e "\a" ;;
esac
出现beep声 :mrgreen:

MichaelBibby 发表于 2005-5-10 09:47:03

呵呵,不错,修改一下:
#!/usr/local/bin/bash

grep "000" logfile>/dev/null

case $? in
   0) . ;;
   1) echo -e "\a" ;;
esac
出现beep声 :mrgreen:我又稍微修改了一下下,更合理一点点

#!/usr/local/bin/bash

tail -1 logfile|grep "000">/dev/null

case $? in
   0) echo ok ;;
   1) echo wrong ;;
esac

MichaelBibby 发表于 2005-5-10 09:48:36

可以在退出状态为1(即出现问题的情况)的case语句里再加条件判断,更具体为111和109
atfa你自己整吧

atfa 发表于 2005-5-10 10:47:24

诸位使用grep是不好的,因为用户信息里面有很多0000,呵呵,不过这个用awk和sed都简单,我能搞定。

这个脚本可以实时的监控?我感觉还是需要把它加到crontab里面才行啊,有没有办法让他不要退出一直执行呢?

MichaelBibby 发表于 2005-5-10 11:34:47

那就是cron了
页: [1]
查看完整版本: 又有shell编程问题,请教大家