腳本的顯示效果
#########################系統信息#########################
系統類型:Linux
系統版本:CentOS Linux release 7.5.1804 (Core)
系統內核:3.10.0-862.el7.x86_64
當前時間:2020-06-06_15:18:22
運行時間:4:25
最後重啓時間:2020-06-06 18:53
本機名稱:room9pc01.tedu.cn
#########################網絡信息#########################
訪問外網:成功
#########################硬件信息#########################
CPU數量: 1
CPU核心: 4
CPU型號: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
內存總容量: 15928MB
剩餘內存容量: 11982MB
磁盤總容量: 400GB
剩餘磁盤容量:286GB
#########################安全信息#########################
當前登錄用戶:root
用戶異常:是
腳本如下:
#!/bin/bash
function system(){ #編寫關於查看系統信息的函數
echo "#########################系統信息#########################"
OS_TYPE=`uname` #定義變量OS_TYPE,存的信息是系統類型,``反引號代表的是執行uname命令的結果而不是字符串
OS_VER=`cat /etc/redhat-release`
OS_KER=`uname -a|awk '{print $3}'` #awk '{print $3}代表過濾第三行的信息
OS_TIME=`date +%F_%T`
# awk -F, '{print $1}'代表以逗號切分的,第一行信息
OS_RUN_TIME=`uptime |awk '{print $3}'|awk -F, '{print $1}'`
OS_LAST_REBOOT_TIME=`who -b|awk '{print $2,$3}'`
OS_HOSTNAME=`hostname`
echo " 系統類型:$OS_TYPE"
echo " 系統版本:$OS_VER"
echo " 系統內核:$OS_KER"
echo " 當前時間:$OS_TIME"
echo " 運行時間:$OS_RUN_TIME"
echo "最後重啓時間:$OS_LAST_REBOOT_TIME"
echo " 本機名稱:$OS_HOSTNAME"
}
function network(){ #定義顯示網絡信息的函數
echo "#########################網絡信息#########################"
#定義變量INTERNET存ifconfig命令包涵flags的行,並以:分隔的第一行內容,此內容是一列
INTERNET=(`ifconfig|grep flags|awk -F: '{print $1}'`)
#注意echo ${INTERNET[2]} ---代表顯示過濾處理一列的第3個數的具體數據
#echo ${#INTERNET[*]} ---代表第顯示過濾處理一列的中總共的行數是多少,*代表所有的
for((i=0;i<`echo ${#INTERNET[*]}`;i++))
do
#定義變量OS_IP存ifconfig命令中包涵${INTERNET[$i]}關鍵詞的head -2前兩行中的包含inet行的信息,並提取其中的第
二個關鍵數
OS_IP=`ifconfig ${INTERNET[$i]}|head -2|grep inet|awk '{print $2}'`
#${INTERNET[$i]}關鍵詞對應的ip地址OS_IP
echo " ${INTERNET[$i]}:$OS_IP"
done
curl -I http://www.baidu.com &>/dev/null
#如果curl -I http://www.baidu.com &>/dev/null能訪問成功$?的值是0,不然則是其他的隨機數字
if [ $? -eq 0 ]
then echo " 訪問外網:成功"
else echo " 訪問外網:失敗"
fi
}
function hardware(){ #定義顯示硬件信息的函數
echo "#########################硬件信息#########################"
#過濾出CPU的數量,以數據的大小排序,只顯示唯一數字,並統計大概有多少行
CPUID=`grep "physical id" /proc/cpuinfo |sort|uniq|wc -l`
CPUCORES=`grep "cores" /proc/cpuinfo|sort|uniq|awk -F: '{print $2}'`
CPUMODE=`grep "model name" /proc/cpuinfo|sort|uniq|awk -F: '{print $2}'`
echo " CPU數量: $CPUID"
echo " CPU核心:$CPUCORES"
echo " CPU型號:$CPUMODE"
MEMTOTAL=`free -m|grep Mem|awk '{print $2}'`
MEMFREE=`free -m|grep Mem|awk '{print $7}'`
echo " 內存總容量: ${MEMTOTAL}MB"
echo "剩餘內存容量: ${MEMFREE}MB"
disksize=0
swapsize=`free|grep Swap|awk {'print $2'}`
#除去df -T命令的第一行並過濾掉包換tmpfs|sr0的行,所剩下的行打印出它的以空格分隔的第三行數據
partitionsize=(`df -T|sed 1d|egrep -v "tmpfs|sr0"|awk {'print $3'}`)
#將每塊磁盤的大小相加
for ((i=0;i<`echo ${#partitionsize[*]}`;i++))
do
disksize=`expr $disksize + ${partitionsize[$i]}`
done
((disktotal=\($disksize+$swapsize\)/1024/1024))
echo " 磁盤總容量: ${disktotal}GB"
diskfree=0
swapfree=`free|grep Swap|awk '{print $4}'`
partitionfree=(`df -T|sed 1d|egrep -v "tmpfs|sr0"|awk '{print $5}'`)
#將可用的磁盤容量相加
for ((i=0;i<`echo ${#partitionfree[*]}`;i++))
do
diskfree=`expr $diskfree + ${partitionfree[$i]}`
done
((freetotal=\($diskfree+$swapfree\)/1024/1024))
echo "剩餘磁盤容量:${freetotal}GB"
}
function secure(){
echo "#########################安全信息#########################"
countuser=(`last|grep "still logged in"|awk '{print $1}'|sort|uniq`)
for ((i=0;i<`echo ${#countuser[*]}`;i++))
do echo "當前登錄用戶:${countuser[$i]}"
done
md5sum -c --quiet /opt/passwd.db &>/dev/null
if [ $? -eq 0 ]
then echo " 用戶異常:否"
else echo " 用戶異常:是"
fi
}
function chksys(){
system
network
hardware
secure
}
chksys