在生産環境中,我們時常要注意主機的各種硬體狀态,如果是規模較大的服務叢集zabbix等健康工具當然好用,如果隻是一些小規模的服務主機,shell就會表現的更靈活,也更适用,今天就和大家分享一個系統巡檢腳本!
1 #!/bin/bash
2
3 function system(){
4 echo "#########################系統資訊#########################"
5 OS_TYPE=`uname`
6 OS_VER=`cat /etc/redhat-release`
7 OS_KER=`uname -a|awk '{print $3}'`
8 OS_TIME=`date +%F_%T`
9 OS_RUN_TIME=`uptime |awk '{print $3}'|awk -F, '{print $1}'`
10 OS_LAST_REBOOT_TIME=`who -b|awk '{print $2,$3}'`
11 OS_HOSTNAME=`hostname`
12
13 echo " 系統類型:$OS_TYPE"
14 echo " 系統版本:$OS_VER"
15 echo " 系統核心:$OS_KER"
16 echo " 目前時間:$OS_TIME"
17 echo " 運作時間:$OS_RUN_TIME"
18 echo "最後重新開機時間:$OS_LAST_REBOOT_TIME"
19 echo " 本機名稱:$OS_HOSTNAME"
20 }
21 function network(){
22
23 echo "#########################網絡資訊#########################"
24 INTERNET=(`ifconfig|grep ens|awk -F: '{print $1}'`)
25 for((i=0;i<`echo ${#INTERNET[*]}`;i++))
26 do
27 OS_IP=`ifconfig ${INTERNET[$i]}|head -2|grep inet|awk '{print $2}'`
28 echo " 本機IP:${INTERNET[$i]}:$OS_IP"
29 done
30 curl -I http://www.baidu.com &>/dev/null
31 if [ $? -eq 0 ]
32 then echo " 通路外網:成功"
33 else echo " 通路外網:失敗"
34 fi
35 }
36
37 function hardware(){
38
39 echo "#########################硬體資訊#########################"
40 CPUID=`grep "physical id" /proc/cpuinfo |sort|uniq|wc -l`
41 CPUCORES=`grep "cores" /proc/cpuinfo|sort|uniq|awk -F: '{print $2}'`
42 CPUMODE=`grep "model name" /proc/cpuinfo|sort|uniq|awk -F: '{print $2}'`
43
44 echo " CPU數量: $CPUID"
45 echo " CPU核心:$CPUCORES"
46 echo " CPU型号:$CPUMODE"
47
48 MEMTOTAL=`free -m|grep Mem|awk '{print $2}'`
49 MEMFREE=`free -m|grep Mem|awk '{print $7}'`
50
51 echo " 記憶體總容量: ${MEMTOTAL}MB"
52 echo "剩餘記憶體容量: ${MEMFREE}MB"
53
54 disksize=0
55 swapsize=`free|grep Swap|awk {'print $2'}`
56 partitionsize=(`df -T|sed 1d|egrep -v "tmpfs|sr0"|awk {'print $3'}`)
57 for ((i=0;i<`echo ${#partitionsize[*]}`;i++))
58 do
59 disksize=`expr $disksize + ${partitionsize[$i]}`
60 done
61 ((disktotal=\($disksize+$swapsize\)/1024/1024))
62
63 echo " 磁盤總容量: ${disktotal}GB"
64
65 diskfree=0
66 swapfree=`free|grep Swap|awk '{print $4}'`
67 partitionfree=(`df -T|sed 1d|egrep -v "tmpfs|sr0"|awk '{print $5}'`)
68 for ((i=0;i<`echo ${#partitionfree[*]}`;i++))
69 do
70 diskfree=`expr $diskfree + ${partitionfree[$i]}`
71 done
72
73 ((freetotal=\($diskfree+$swapfree\)/1024/1024))
74
75 echo "剩餘磁盤容量:${freetotal}GB"
76 }
77
78
79 function secure(){
80 echo "#########################安全資訊#########################"
81
82 countuser=(`last|grep "still logged in"|awk '{print $1}'|sort|uniq`)
83 for ((i=0;i<`echo ${#countuser[*]}`;i++))
84 do echo "目前登入使用者:${countuser[$i]}"
85 done
86
87 md5sum -c --quiet /opt/passwd.db &>/dev/null
88 if [ $? -eq 0 ]
89 then echo " 使用者異常:否"
90 else echo " 使用者異常:是"
91 fi
92 }
93
94 function chksys(){
95 system
96 network
97 hardware
98 secure
99 }
腳本思路:因為監控的資訊比較多,是以,用函數将這些功能分成4個子產品、system() 系統資訊子產品、network()網絡資訊子產品、hardware()硬體資訊子產品、secure()安全資訊子產品,最後通過chksys()将各個子產品調用出來!
轉載于:https://www.cnblogs.com/liujunqiao/p/10738298.html