免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6969 | 回复: 16
打印 上一主题 下一主题

这个shell应该怎么写?  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-01-24 11:39 |只看该作者 |倒序浏览
我想每天自动执行该shell,功能是:
1.每天检查/var/log/message,secure,mail等log文件.
2.挑出前一天的记录中包括"abcdef..."或"cdefab..."或"....."字样的行.
3.将这些内容发送到我的邮箱中.

如何做,我刚接触shell,请大家帮忙.

多谢了.

论坛徽章:
0
2 [报告]
发表于 2002-01-24 13:50 |只看该作者

这个shell应该怎么写?

1. 写好这个shell:
2. 配在cronttab 中

论坛徽章:
0
3 [报告]
发表于 2002-01-24 13:59 |只看该作者

这个shell应该怎么写?

#!/bin/sh
$file="filename"
echo "" > $file
grep  "abcdef..."  /var/log/message >> $file
................
cat $file | mail name@domain -s"subject"
rm $file

论坛徽章:
0
4 [报告]
发表于 2002-01-25 13:48 |只看该作者

这个shell应该怎么写?

对我来说,难点是既包括abcd又包括cdef的选择.

比如:在今天(日期也要通过程序自动获得)的记录行里,出现"unaviabale"或者"error"的行.

论坛徽章:
0
5 [报告]
发表于 2002-01-25 15:40 |只看该作者

这个shell应该怎么写?

下面引用由梦叮咚2002/01/25 01:48pm 发表的内容:
对我来说,难点是既包括abcd又包括cdef的选择.
比如:在今天(日期也要通过程序自动获得)的记录行里,出现"unaviabale"或者"error"的行.
你的前一句是说和的关系,后面的例子是或者的关系,到底是哪一种啊

论坛徽章:
0
6 [报告]
发表于 2002-01-25 17:47 |只看该作者

这个shell应该怎么写?

1. 写一个shell程序
#!/bin/sh
/usr/xpg4/bin/grep -E 'unaviabale|error' /var/adm/message > /tmp/file.$$
/usr/xpg4/bin/grep -E 'unaviabale|error' /var/adm/mail >> /tmp/file.$$
mailx -s &quot;....&quot; your-email-address@domain < /tmp/file.$$
rm /tmp/file.$$

2 将shell程序写入crontab

论坛徽章:
0
7 [报告]
发表于 2002-01-28 10:16 |只看该作者

这个shell应该怎么写?

[这个贴子最后由梦叮咚在 2002/01/28 01:34pm 编辑]

Jan 28 10:26:06 intranet sendmail[3359]: KAA03348: to=, delay=00:01:12, xdelay=00:00:00, mailer=local, stat=User unknown
Jan 28 10:26:06 intranet sendmail[3359]: KAA03348: KAA03359: DSN: User unknown
Jan 28 10:26:22 intranet sendmail[3364]: UAA20145: to=<5555555@goodforyou.com>, delay=3+13:37:35, xdelay=00:00:00, mailer=esmtp, relay=goodforyou.com. [212.100.230.160], stat=Deferred: Connection refused by goodforyou.com.
Jan 28 10:26:45 intranet sendmail[3359]: KAA03359: to=, delay=00:00:39, xdelay=00:00:39, mailer=esmtp, relay=public.ayptt.ha.cn. [202.102.230.147], stat=Sent (JAA27956 Message accepted for delivery)
Jan 28 10:26:57 intranet sendmail[3373]: KAA03373: from=, size=4795, class=0, pri=34795, nrcpts=1, msgid=<001001c1a79e$7cab5880$190aa8c0@linjing>, proto=ESMTP, relay=[192.168.10.25]
Jan 28 10:26:58 intranet sendmail[3375]: KAA03373: to=, delay=00:00:01, xdelay=00:00:01, mailer=esmtp, relay=ca-css.com. [211.157.248.24], stat=Sent (2.6.0 <001001c1a79e$7cab5880$190aa8c0@linjing> Queued mail for delivery)
Jan 28 10:28:25 intranet sendmail[3384]: KAA03384: from=, size=29486, class=0, pri=59486, nrcpts=1, msgid=<200201280157.KAA09511@member.medikorea.net>, bodytype=8BITMIME, proto=ESMTP, relay=member.medidas.co.kr [203.239.120.13]
Jan 28 10:28:25 intranet sendmail[3388]: KAA03384: to=, delay=00:00:09, xdelay=00:00:00, mailer=local, stat=Sent
Jan 28 10:31:32 intranet sendmail[3399]: KAA03399: ruleset=check_mail, arg1=, relay=member.medidas.co.kr [203.239.120.13], reject=451 ... Sender domain must resolve
Jan 28 10:31:32 intranet sendmail[3399]: KAA03399: from=, size=0, class=0, pri=0, nrcpts=0, proto=ESMTP, relay=member.medidas.co.kr [203.239.120.13]
以上是我的log文件,我想写个shell,自动查找当天记录中含有&quot;Sender domain must resolve&quot;或&quot;User unknown&quot;的行,并发邮件给我.大家看这样对不对.

today=&quot;Jan 28&quot;
/bin/grep $today &amp; &quot;Sender domain must resolve|User unknown&quot; /var/log/messages | mail me@domain.com

这样应该可以吧,但是变量today如何自动获到今天的日期并转为以上格式呢?

论坛徽章:
0
8 [报告]
发表于 2002-01-28 13:35 |只看该作者

这个shell应该怎么写?

不行呀,在命令行上运行
grep &quot;&quot;Sender domain must resolve|User unknown&quot; /var/log/messages
就出不来什么东西.怎么回事呢?

论坛徽章:
0
9 [报告]
发表于 2002-01-29 20:34 |只看该作者

这个shell应该怎么写?

要加上参数-e 或者-E
例如:
/usr/xpg4/bin/grep -E &quot;Sender domain must resolve|User unknown&quot; /var/log/messages
或者
/usr/xpg4/bin/grep -e &quot;Sender domain must resove&quot; -e &quot;User unknown&quot; /var/log/messages

注意:是/usr/xpg4/bin/grep

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
10 [报告]
发表于 2002-01-29 21:09 |只看该作者

这个shell应该怎么写?

[这个贴子最后由feeling在 2002/01/29 09:17pm 编辑]
  1. #!/bin/sh
  2. DD=`date |cut -c 5-10`
  3. #捕获当前日期,只包括月、日(根据实际情况来确定)
  4. for FF in /var/log/message /var/log/secure /var/log/mail
  5.    do
  6.         cat $FF |grep $DD |grep abcdef >> /home/yourpath/logfile
  7.    done
  8. # 分别cat几个日志文件,将里面含有特征字符的行重定向到/home/yourpath/logfile
  9. mail yourmail /home/yourpath/logfile && rm /home/yourpath/logfile
  10. # 向指定邮箱发送内容为/home/yourpath/logfile的邮件,成功后删除文件
  11. # The End
  12. # 未曾测试!
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP