shell脚本之判断httpd是否有异常

案例 以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

(1)
单爆手单爆手
上一篇 2018-05-20 20:15
下一篇 2018-05-20 20:15

相关推荐

  • centos6启动流程

    不知道为什么编辑了前两次都发不了,这是第三次了

    Linux笔记 2018-05-13
  • N31第二周作业

    本周(6.25–7.1)第2周 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 目录管理类命令:cd pwd ls mkdir rmdir tree cd:change directory cd [/PATH/TO/SOMEDIR] cd:切换回家目录 注意:bash中,~表示家目录 cd~:切换回自己的家目录 cd…

    Linux笔记 2018-07-02
  • 一些常用的文本工具

    cat命令:查看文本内容 cat [选项]… [文件]… -E    显示行结束符 -n    显示文本内容时显示行号 -A    显示所以控制符 -b    非空行编号 -s     压缩连续的空行成一行 head命令 : -n  显示文件前n行,默认显示前10行 -c # 显示文件前#个字节内容 tail命令: tail [选项]…

    2018-04-09
  • 任务计划

    任务计划

    2018-06-05
  • 计算机及Linux基础知识

    1、描述计算机的组成及其功能 根据冯诺依曼体系结构,计算机由运算器、存储器、控制器、输入设备和输出设备五个基本部件组成,其中运算器和控制器合称为中央处理器(CPU)。 各基本部件的功能是: 存储器用于存放指令和数据; 控制器控制指令自动执行; 运算器进行加、减、乘、除四种基本算术运算以及逻辑运算和附加运算;输入输出设备通过和主机进行通信,完成人机数据交互。 …

    2018-06-23
  • 计算机的组成及其功能

    01.描述计算机的组成及其功能 计算器是由运算器,控制器,存储器,输入装置和输出装置五大部件组成计算机, 每一部件分别按要求执行特定的基本功能。 输入设备  将数据、程序、文字符号、图象、声音等信息输送到计算机中。常用的输入设备有键盘、鼠标、触摸屏、数字转换器等。 输出设备  将计算机的运算结果或者中间结果打印或显示出来。常用的输出设备有:显示器、打印机、绘…

    2018-08-09