天天看點

Liu Junqiao:生産環境中shell腳本執行個體

在生産環境中,我們時常要注意主機的各種硬體狀态,如果是規模較大的服務叢集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