免费注册 查看新帖 |

Chinaunix

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

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

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

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

多谢了.

论坛徽章:
0
17 [报告]
发表于 2008-03-24 14:26 |只看该作者
原帖由 梦叮咚 于 2002-1-31 12:38 发表
谢谢各位,问题已经搞定,终于明白一个问题.原来`与'和"的差别这么大呀.
如果'是单引号,"是双引号,那么`算同什么符号呢?



单引号(‘’):取消除单引号以外的任何字符的特殊含义。如:echo  ‘my name is  $name’其结果为:my name is $name ,此时$只作为一个普通字符使用,否则$name将被解释为变量name的值。

双引号(“”):取消除双引号、$号以及_号以外的所有字符的特殊含义。

论坛徽章:
0
16 [报告]
发表于 2008-03-24 13:07 |只看该作者
一顶顶上个六年!

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

这个shell应该怎么写?

最后结果如下:
(目的是每日检查/var/log/maillog文件,将当天内含有error1和含有error2的行发mail给user@domain.com)

[root@mail lizf]# cat shell01.sh
#!/bin/bash
today=`date +%b%e`
grep "$today" /var/log/maillog|grep "error1"
grep "$today" /var/log/maillog|grep "error2"

然后在cron里加上一行
~/shell01.sh|mail user@domain.com -s `date +%b%e`

论坛徽章:
0
14 [报告]
发表于 2002-01-31 12:38 |只看该作者

这个shell应该怎么写?

谢谢各位,问题已经搞定,终于明白一个问题.原来`与'和"的差别这么大呀.
如果'是单引号,"是双引号,那么`算同什么符号呢?

论坛徽章:
0
13 [报告]
发表于 2002-01-30 14:58 |只看该作者

这个shell应该怎么写?

试一下:grep "$DD" /var/log/maillog

论坛徽章:
0
12 [报告]
发表于 2002-01-30 14:14 |只看该作者

这个shell应该怎么写?

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

谢谢feeling.
grep $DD /var/log/maillog时出现问题
$DD的值"Jan 30"之间的空格不能被grep认为一句,执行结果为:
grep: 30: No such file or directory
/var/log/maillog:Jan  7 16:16:33 test sendmail[519]: alias database /etc/aliases
rebuilt by root
/var/log/maillog:Jan  7 16:16:34 test sendmail[519]: /etc/aliases: 41 aliases, l
ongest 14 bytes, 413 bytes total
/var/log/maillog:Jan  7 16:16:34 test sendmail[529]: starting daemon (8.11.2): S
MTP+queueing@01:00:00
显然把30当成文件了.

论坛徽章:
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
11 [报告]
发表于 2002-01-29 21:12 |只看该作者

这个shell应该怎么写?

如果想既包括abcd又包括cdef,就把上面脚本里面的cat行改为:
cat $FF |grep $DD |grep abcd |grep cdef >> /home/yourpath/logfile

论坛徽章:
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. # 未曾测试!
复制代码

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

这个shell应该怎么写?

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

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

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP