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.www58058.com/99026

(0)
單爆手單爆手
上一篇 2018-05-20
下一篇 2018-05-20

相關推薦

  • Linux第一周小結

    Linux常用命令、鏈接

    Linux筆記 2018-04-01
  • OSI七層及TCP/IP相關協議圖解

    OSI TCP/IP 網絡協議

    2018-04-30
  • linux 基礎命令

    linux 基礎

    Linux筆記 2018-04-01
  • SSH協議及基于SSH集群key認證實驗

    本節索引: 一、SSH協議相關概念 二、實驗:實現基于key登錄認證 三、實驗:實現多臺機器間互相基于key登錄認證 四、實驗:實現100臺機器基于key登錄驗證 五、實驗:利用pssh工具實現集群操作 一、SSH協議相關概念 SSH:secure shell,protocal,22/tcp,安全的遠程登錄; 利用 SSH 協議可以有效防止遠程管理過程中的信…

    2018-05-19
  • Linux的哲學思想

    Linux的哲學思想 1、一切皆文件(硬件設備亦如此): 所有資源在Linux上都已以文件方式存在,包括硬件設備(設備文件)通信接口。 linux 系統中所有的設備都是作為文件系統的一個節點來掛載和使用的,比如光驅,一般掛載在 /mnt/ cdrom 里,cpu掛載在/dev/cpu. 2、 由眾多功能單一的小程序組成: 且每一個小程序只做一件事情,并且只做…

    Linux筆記 2018-08-04
  • linux是隨身筆記part1

    第一周學習

    2018-06-25
欧美性久久久久