|
#!/bin/bash
#变量需先声明才能使用
shopt -s -o nounset
date1=`date +%Y%m%d`
# mkdir Directory
#判断/mnt/backup下是否存在已当前日期的文件夹,如果没有则创建,有则跳过
if [ -e /mnt/backup/$date1 ] ; then
:
else
mkdir -p /mnt/backup/$date1
fi
# Hostname
#定义主机名,生成文件调用
HostCmd="/bin/hostname"
HostName=$($HostCmd)
Name=${HostName%%.*}
# Operatig system checks
#检测系统当前版本
# Version
check_version (){
echo "Sytem Version:"
kernel=`uname -a | awk '{print $3}'`
hostname=`uname -a | awk '{print $2}'`
bit=`uname -a | awk '{print $14}'`
echo "System Kernel:" $kernel
echo "System Hostname:" $hostname
#判断当前系统版本位数
if [ $bit = x86_64 ]; then
echo "System Bit: 64位."
else
echo "System Bit: 32位."
fi
}
# Network
#定义网络配置,截取ip地址,mac地址,rx,tx信息,忽略其他信息
check_network () {
echo "System Network:"
ip_addr=`ifconfig -a | grep eth0 -C 8 | grep inet | awk '{print $2}' | awk -F: '{print $2}'`
ip_mac=`ifconfig -a | grep eth0 | awk '{print $5}'`
ip_rx_packets=`ifconfig | grep eth0 -C 8 | grep "RX packets"`
ip_tx_packets=`ifconfig | grep eth0 -C 8 | grep "TX packets"`
ip_rx_bytes=`ifconfig | grep eth0 -C 8 | grep "RX bytes"`
echo "IP_add:" $ip_addr
echo "IP_MAC:" $ip_mac
echo "IP_RX:" $ip_rx_packets
echo "IP_TX:" $ip_tx_packets
echo "IP_RX_Bytes:" $ip_rx_bytes
}
# Crontab check
#检测任务计划
check_crontab () {
echo "Crontab check:"
crontab -l
}
# Performance Check
# Average system load
#检测负载,检查cpu数量,型号及主频
check_load () {
echo "Average system load:"
W="/usr/bin/w"
show_loading=$($W | head -1)
L1=$(echo $show_loading | awk '{print $10}')
L5=$(echo $show_loading | awk '{print $11}')
L15=$(echo $show_loading | awk '{print $12}')
L1=${L1%,*}
L5=${L5%,*}
cpu_sl=`cat /proc/cpuinfo | grep processor | wc -l`
cpu_xh=`cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c`
cpu_zp=`cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c | awk '{print $8}'`
echo "1、5、15分钟系统的平均负载为:" $L1 $L5 $L15
echo "CPU 数量为:" $cpu_sl
echo "CPU 型号:" $cpu_xh
echo "CPU主频:" $cpu_zp
}
# Memory usage
#检查内存,列出总内存,可用内存及占用百分比,检查内存插槽
check_memory () {
Memslot=`dmidecode | grep -A16 "Memory Device$" | grep Memory | wc -l`
echo "Memory usage:"
MemFree=`free -m | grep Mem | awk -F: '{print $2}' | awk '{print $3}'`
MemBuffers=`free -m | grep Mem | awk -F: '{print $2}' | awk '{print $5}'`
MemCached=`free -m | grep Mem | awk -F: '{print $2}' | awk '{print $6}'`
MemTotal=`free -m | grep Mem | awk -F: '{print $2}' | awk '{print $1}'`
#计算可用内存
MemSY=`expr $MemFree \+ $MemBuffers \+ $MemCached`
#计算剩余内存百分比%
MemB=`awk 'BEGIN{printf "%.2f%\n",'$MemSY/$MemTotal\*100'}'`
echo "服务器共有" $Memslot "插槽","系统总内存为(M):" $MemTotal ",可用内存为(M):"$MemSY ",剩余百分比为:" $MemB
}
# Disk Space
#检查分区状态
check_disk () {
echo "Disk Space:"
df -h
}
# Process Resource
#检查ps进程,并排除tty及pts信息
check_process () {
echo "Process Resource:"
ps -ef | grep -v pts | grep -v tty*
}
# Security check
#检查当前登录用户
# Currently logged in user
check_who () {
echo "Currently logged in user"
who
}
# System uptime
#检查系统运行时间
check_uptime () {
echo "System uptime:"
u=`uptime | awk '{print $3}'`
echo "系统运行时间为:$u 天"
}
# System Account check
#检查系统账户,剔除nologin用户
check_account () {
echo "Sytem Account check:"
cat /etc/passwd | grep -v nologin
}
# System open ports
#检查服务器开放端口
check_ports () {
echo "Sytem open ports:"
netstat -an | grep LISTEN
}
# System chkconfig
#检查chkconfig,只列出终端3启用状态的。
check_chkconfig () {
echo "Sytem chkconfig:"
chkconfig --list | grep 3:启用
}
# System Iptables
#检查防火墙配置
check_iptables () {
echo "System Iptables:"
iptables -L
}
for i in check_version check_network check_crontab check_load check_memory check_disk check_process check_who check_uptime check_account check_ports check_chkconfig check_iptables
do
echo "--------------------------------------------------------------------------------------------------------------------"
$i
done > /mnt/backup/$date1/$date1.$HostName.doc #生成报告 |
|