1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<code>我的博客已迁移到xdoujiang.com请去那边和我交流</code>
<code>一、基础环境说明</code>
<code>1、该脚本用来检查某个服务产生core文件只发送1次短信,相同的core文件不再发送</code>
<code>2、这里模拟3个online目录</code>
<code>ll </code><code>/opt/online/</code>
<code>drwxr-xr-x 2 root root 4096 2015-04-27 18:20 online.11</code>
<code>drwxr-xr-x 2 root root 4096 2015-04-27 18:20 online.22</code>
<code>drwxr-xr-x 2 root root 4096 2015-04-27 18:20 online.33</code>
<code>3、shell说明和使用</code>
<code>1)先创建1个文件</code>
<code>touch</code> <code>/opt/online/online</code><code>.11</code><code>/core</code><code>.111</code>
<code>2)执行第1次脚本后会</code>
<code>ll </code><code>/opt/online/online</code><code>.11/</code>
<code>-rw-rw-r--. 1 root root 0 Apr 27 22:05 core.111</code>
<code>-rw-rw-r--. 1 root root 9 Apr 27 23:27 corefile</code>
<code>cat</code> <code>/opt/online/online</code><code>.11</code><code>/corefile</code>
<code>core.111</code>
<code>执行第2次时就不会再发送短信和写入到这个corefile文件里了。</code>
<code>3)shell一些语法说明</code>
<code>message=$@</code>
<code>也可以写成message=</code><code>""</code>
<code>$@</code>
<code>所有的位置参数(每个都作为独立的字符串) 等同于</code><code>"$1"</code> <code>"$2"</code><code>... </code><code>"$N"</code><code>。</code>
<code>set</code> <code>-o nounset</code>
<code>在扩展一个没有的设置的变量的时候,显示错误的信息 </code>
<code>set</code> <code>-o errexit</code>
<code>如果一个命令返回一个非0退出状态值(失败),就退出.</code>
<code>二、shell脚本</code>
<code>#!/bin/bash</code>
<code>#-------------------------------------------------- </code>
<code>#Created:2015-04-27</code>
<code>#Author:jimmygong</code>
<code>#Mail:[email protected]</code>
<code>#Function:check core && send message</code>
<code>#Version:1.0</code>
<code>#--------------------------------------------------</code>
<code>onlinedir=</code><code>"/opt/online"</code>
<code>tellist=(12345678912 12345678913)</code>
<code>function</code> <code>sendmessage () </code>
<code>{</code>
<code> </code><code>currdate=</code><code>"$(date +%Y/%m/%d)"</code>
<code> </code><code>message=$@</code>
<code> </code><code>ip=`</code><code>ifconfig</code> <code>eth1|</code><code>awk</code> <code>'/inet addr:/'</code><code>|</code><code>awk</code> <code>-F: </code><code>'{print $2}'</code><code>|</code><code>awk</code> <code>-F</code><code>" "</code> <code>'{print $1}'</code><code>`</code>
<code> </code><code>for</code> <code>phone </code><code>in</code> <code>${tellist[@]}</code>
<code> </code><code>do</code>
<code> </code><code>links -dump </code><code>"http://192.168.1.1/22222?mobile=$phone&msg=$currdate:$message:$ip&sign=11111111111111111111111111111111"</code> <code>> </code><code>/dev/null</code> <code>2>&1</code>
<code> </code><code>done</code>
<code>}</code>
<code>function</code> <code>checkcore ()</code>
<code> </code><code>num=`</code><code>ls</code> <code>-1 $onlinedir|</code><code>grep</code> <code>"^online"</code><code>|</code><code>wc</code> <code>-l`</code>
<code> </code><code>for</code> <code>((k=1;k<=${num};k++))</code>
<code> </code><code>listdir=`</code><code>ls</code> <code>-1 $onlinedir|</code><code>grep</code> <code>"^online"</code><code>|</code><code>sed</code> <code>-n $k</code><code>'p'</code><code>`</code>
<code> </code><code>for</code> <code>j </code><code>in</code> <code>$onlinedir/$listdir</code>
<code> </code><code>do</code>
<code> </code><code>cd</code> <code>$j</code>
<code> </code><code>touch</code> <code>corefile</code>
<code> </code><code>for</code> <code>m </code><code>in</code> <code>core.*</code>
<code> </code><code>do</code>
<code> </code><code>if</code> <code>[[ -e $m ]]</code>
<code> </code><code>then</code>
<code> </code><code>core=0</code>
<code> </code><code>for</code> <code>f </code><code>in</code> <code>`</code><code>cat</code> <code>$j</code><code>/corefile</code><code>`</code>
<code> </code><code>do</code>
<code> </code><code>if</code> <code>[[ $m = $f ]]</code>
<code> </code><code>then</code>
<code> </code><code>core=1</code>
<code> </code><code>break</code>
<code> </code><code>fi</code>
<code> </code><code>done</code>
<code> </code><code>if</code> <code>[[ $core -</code><code>eq</code> <code>0 ]]</code>
<code> </code><code>then</code>
<code> </code><code>message=</code><code>"core"</code>
<code> </code><code>sendmessage $message </code>
<code> </code><code>echo</code> <code>$m >> $j</code><code>/corefile</code>
<code> </code><code>fi</code>
<code> </code><code>fi</code>
<code> </code><code>done</code>
<code> </code><code>done</code>
<code>checkcore</code>
<code>exit</code> <code>0</code>
本文转自 xdoujiang 51CTO博客,原文链接:http://blog.51cto.com/7938217/1639520,如需转载请自行联系原作者