案例 以web为例 大全讲解:如http为例
#/etc/init.d/httpd start 开启httpd
#lsof –i :80
[root@centos6 ~/bin]$curl -I -s -o /dev/null -w “%{http_code}\n” http://172.16.0.1
析:-I 是响应头,响应head。-s是安静的模式,-o输出定向到空,-w指定一个状态码\n换行。
过滤出200的行:
[root@centos6 ~/bin]$curl -I http://172.16.0.1
HTTP/1.1 200 OK
Date: Sun, 20 May 2018 07:53:38 GMT
Server: Apache/2.2.15 (CentOS)
Connection: close
Content-Type: text/html;charset=UTF-8
[root@centos6 ~/bin]$curl -I http://172.16.0.1|head -n1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0
HTTP/1.1 200 OK
你发现过滤不出HTTP/1.1 200 ok这行,里边有很多垃圾信息
怎么办?
运用运维思想来解决:
.某个命令能帮你把某东西弄出来,它就能帮你把它去掉,所以找man查,查到-s选项可以去掉垃圾信息
.linux就两种输出,一个正确输出,一个错误输出。所以把错误的定向到空,就可以过滤了
[root@centos6 ~/bin]$curl -I -s http://172.16.0.1|head -1
HTTP/1.1 200 OK
[root@centos6 ~/bin]$curl -I http://172.16.0.1 2>/dev/null |head -1
HTTP/1.1 200 OK
即这里的-s就等同于2>/dev/null
[root@centos6 ~/bin]$vim check_web.sh
#!/bin/bash
#if [ `curl -I http://172.16.0.1 2>/dev/null|head -1|egrep -o “200|301|302″|wc -l` -eq 1 ]
if [ `curl -I -s http://172.16.0.1&&echo $?` -eq 0 ]
then
echo “Httpd is running”
else
echo “Httpd is stopped”
fi
注意:方法二如果没有-s或是2>/dev/null,则echo $?的输出结果中也会包含垃圾信息,看效果:[root@centos6 ~/bin]$curl -I http://172.16.0.1&&echo $?
HTTP/1.1 200 OK
Date: Sun, 20 May 2018 08:56:21 GMT
Server: Apache/2.2.15 (CentOS)
Connection: close
Content-Type: text/html;charset=UTF-8
0
案例2 :监控web站点目录(/var/html/www)下所有文件是否被恶意篡改(文件内容被改了),如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次
思路:1.什么是恶意篡改,只要未经过许可改动的都是篡改。
2.文件被改了,会有特征。
a.大小可能会变化
b.修改时间会变化 (文件测试符ot,nt)
这里我以/var/log/为例:
[root@centos6 ~/bin]$#find /var/log/ -type f |xargs md5sum >/tmp/md5.txt
[root@centos6 ~/bin]$#md5sum –c /tmp/md5.txt
/var/log/cron: FAILED
/var/log/anaconda.program.log: OK
/var/log/anaconda.yum.log: OK
/var/log/cron-20180506: OK
/var/log/sa/sa05: OK
/var/log/sa/sa20: FAILED
/var/log/sa/sar19: OK
. md5sum: WARNING: 6 of 76 computed checksums did NOT match
.思想:每天上线之后先把正确的东西记录下来,才能知道有没有东西有变化。
.md5sum 就是类似于于给文件生成一个指纹。这样在一次上线之前只要这个指纹变化了,说明这个文件有问题。所以每次上线之后最好建立一个md5的列表/tmp/md5.txt。
.#md5sum –c 的功能 :直接指定创建的那个列表,它就能帮你判断出来了。
.
.这个案例中你会发现它有可能会出现最后一行那样的报错信息,但是你只取FAILED,所以你要把这个报错信息重定向到/dev/null中否则你永远过滤不出你想要的,怎么过呢?
[root@centos6 ~]$md5sum -c /tmp/md5.txt 2>/dev/null 这样就行了。
[root@centos6 ~]$md5sum -c /tmp/md5.txt 2>/dev/null|grep FAILED|awk ‘{print $NF}’|wc -l
6 现在你看到了,无论你怎么用都不会看到上面的错误信息了
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/99025