非法入侵 发表于 2018-8-22 10:19:13

Shell-批量巡检服务器脚本

#!/bin/bash  
########################################################################################
  
#Function:
  
#This script checks the system's information,disks's information,performance,etc...of the
  
#server
  
#
  
#Author:
  
#By Jack Wang
  
#
  
#Company:
  
#ShaanXi Great Wall Information Co.,Ltd.
  
########################################################################################
  

  
########################################################################################
  
#
  
#GatherServerIpAddress is the server's IP address that gather the checking log
  
#GatherServerPassword is the server's IP address that gather the checking log
  
#
  
########################################################################################
  
GatherServerIpAddress=$1
  
GatherServerPassword=$2
  

  
########################################################################################
  
#GetTheIpCommand is a command that you can get the IP address
  
########################################################################################
  
GetTheIpCommand=`ifconfig | grep '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' --color=auto -o | sed -e '2,5d'`
  

  
########################################################################################
  
#LogName is a command that Your logs'name
  
########################################################################################
  
LogName=`ifconfig|grep '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' --color=auto -o|sed -e '2,5d'``echo "-"``date +%Y%M%d`
  

  
########################################################################################
  
#
  
#GatherLogPath is a path that collecting log path
  
#LocalServerLogPath is local log path
  
#
  
########################################################################################
  
GatherServerLogPath="/tmp/GatherLogDirectory"
  
LocalServerLogPath="/tmp/LocalServerLogDirectory"
  

  

  
########################################################################################
  
#LinuxOsInformation is function that usege to collect OS's information
  
########################################################################################
  
LinuxOsInformation(){
  
Hostname=`hostname`
  
UnameA=`uname -a`
  
OsVersion=`cat /etc/issue | sed '2,4d'`
  
Uptime=`uptime|awk '{print $3}'|awk -F "," '{print $1}'`
  
ServerIp=`ifconfig|grep "inet"|sed '2,4d'|awk -F ":" '{print $2}'|awk '{print $1}'`
  
ServerNetMask=`ifconfig|grep "inet"|sed '2,4d'|awk -F ":" '{print $4}'|awk '{print $1}'`
  
ServerGateWay=`netstat -r|grep "default"|awk '{print $2}'`
  
SigleMemoryCapacity=`dmidecode|grep -P -A5 "Memory\s+Device"|grep "Size"|grep -v "Range"|grep ''|awk -F ":" '{print $2}'|sed 's/^[ \t]*//g'`
  
MaximumMemoryCapacity=`dmidecode -t 16|grep "Maximum Capacity"|awk -F ":" '{print $2}'|sed 's/^[ \t]*//g'`
  
NumberOfMemorySlots=`dmidecode -t 16|grep "Number Of Devices"|awk -F ":" '{print $2}'|sed 's/^[ \t]*//g'`
  
MemoryTotal=`cat /proc/meminfo|grep "MemTotal"|awk '{printf("MemTotal:%1.0fGB\n",$2/1024/1024)}'|awk -F ":" '{print $2}'`
  
PhysicalMemoryNumber=`dmidecode|grep -A16 "Memory Device"|grep "Size:"|grep -v "No Module Installed"|grep -v "Range Size:"|wc -l`
  
ProductName=`dmidecode|grep -A10 "System Information"|grep "Product Name"|awk -F ":" '{print $2}'|sed 's/^[ \t]*//g'`
  
SystemCPUInfomation=`cat /proc/cpuinfo|grep "name"|cut-d: -f2|awk '{print "*"$1,$2,$3,$4}'|uniq -c|sed 's/^[ \t]*//g'`
  

  
echo -e "Hostname|$Hostname\nUnamea|$UnameA\nOsVersion|$OsVersion\nUptime|$Uptime\nServerIp|$ServerIp\nServerNetMask|$ServerNetMask\nServerGateWay|$ServerGateWay\nSigleMemoryCapacity|$SigleMemoryCapacity\nMaximumMemoryCapacity|$MaximumMemoryCapacity\nNumberOfMemorySlots|$NumberOfMemorySlots\nMemoryTotal|$MemoryTotal\nPhysicalMemoryNumber|$PhysicalMemoryNumber\nProductName|$ProductName\nSystemCPUInformation|$SystemCPUInfomation"
  

  
}
  

  
PerformanceInfomation (){
  
CPUIdle=`top -d 2 -n 1 -b|grep C|grep id|awk '{print $5}'|awk -F "%" '{print $1}'`
  
CPUloadAverage=`top -d 2 -n 1 -b|grep "load average:"|awk -F ":" '{print $5}'|sed 's/^[ \t]*//g'`
  
ProcessNumbers=`top -d 2 -n 1 -b|grep "Tasks"|awk -F "[: ,]" '{print $3}'`
  
Proce***unning=`top -d 2 -n 1 -b|grep "Tasks"|awk -F "[: ,]" '{print $8}'`
  
ProcessSleeping=`top -d 2 -n 1 -b|grep "Tasks"|awk -F "[: ,]" '{print $11}'`
  
ProcessStoping=`top -d 2 -n 1 -b|grep "Tasks"|awk -F "[: ,]" '{print $16}'`
  
ProcessZombie=`top -d 2 -n 1 -b|grep "Tasks"|awk -F "[: ,]" '{print $21}'`
  
UserSpaceCPU=`top -d 2 -n 1 -b|grep 'C'|head -1|awk -F "[: ,%]" '{print $4}'`
  
SystemSpaceCPU=`top -d 2 -n 1 -b|grep 'C'|head -1|awk -F "[: ,%]" '{print $8}'`
  
ChangePriorityCPU=`top -d 2 -n 1 -b|grep 'C'|head -1|awk -F "[: ,%]" '{print $12}'`
  
WaitingCPU=`top -d 2 -n 1 -b|grep 'C'|head -1|awk -F "[: ,%]" '{print $19}'`
  
HardwareIRQCPU=`top -d 2 -n 1 -b|grep 'C'|head -1|awk -F "[: ,%]" '{print $23}'`
  
SoftwareIRQCPU=`top -d 2 -n 1 -b|grep 'C'|head -1|awk -F "[: ,%]" '{print $27}'`
  
MemUsed=`top -d 2 -n 1 -b|grep "Mem"|awk -F "[: ,]" '{print $11}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`
  
MemFreeP=`top -d 2 -n 1 -b|grep "Mem"|awk -F "[: ,]" '{print $16}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`
  
MemBuffersP=` top -d 2 -n 1 -b|grep "Mem"|awk -F "[: ,]" '{print $22}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`
  
CacheCachedP=`top -d 2 -n 1 -b|grep "Swap"|awk -F "[: ,]" '{print $24}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`
  
CacheTotal=`top -d 2 -n 1 -b|grep "Swap"|awk -F "[: ,]" '{print $4}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`
  
CacheUsed=`top -d 2 -n 1 -b|grep "Swap"|awk -F "[: ,]" '{print $14}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`
  
CacheFree=`top -d 2 -n 1 -b|grep "Swap"|awk -F "[: ,]" '{print $18}'|tr -d "a-zA-Z"|awk '{printf("%dM\n",$1/1024)}'`
  

  
echo -e "CPUIdle|$CPUIdle\nCPUloadAverage|$CPUloadAverage\nProcessNumbers|$ProcessNumbers\nProce***unning|$Proce***unning\nProcessSleeping|$ProcessSleeping\nProcessStoping|$ProcessStoping\nProcessZombie|$ProcessZombie\nUserSpaceCPU|$UserSpaceCPU\nSystemSpaceCPU|$SystemSpaceCPU\nChangePriorityCPU|$ChangePriorityCPU\nWaitingCPU|$WaitingCPU\nHardwareIRQCPU|$HardwareIRQCPU\nSoftwareIRQCPU|$SoftwareIRQCPU\nMemUsed|$MemUsed\nMemFreeP|$MemFreeP\nMemBuffersP|$MemBuffersP\nCacheCachedP|$CacheCachedP\nCacheTotal|$CacheTotal\nCacheUsed|$CacheUsed\nCacheFree|$CacheFree\n"
  
}
  

  
OprateSystemSec () {
  
echo '======================UserLogin======================'
  
w
  

  
echo '======================FileUsed======================='
  
df -ah
  

  
echo '======================dmesgError====================='
  
dmesg | grep error
  

  
echo '======================dmesgFail======================'
  
dmesg | grep Fail
  

  
echo '======================BootLog========================'
  
more /var/log/boot.log | grep -V "OK" | sed '1,6d'
  

  
echo '======================route -n======================='
  
route -n
  
echo '======================iptables -L===================='
  
iptables -L
  
echo '======================netstat -lntp=================='
  
netstat -lntp
  
echo '======================netstat -antp=================='
  
netstat -antp
  
echo '======================BootLog========================'
  
netstat -s
  
echo '======================netstat -s====================='
  
last
  
echo '======================du -sh /etc/==================='
  
du -sh /etc/
  
echo '======================du -sh /boot/=================='
  
du -sh /boot/
  
echo '======================du -sh /dev/==================='
  
du -sh /dev/
  
echo '======================df -h=========================='
  
df -h
  
echo '======================mount | column -t=============='
  
mount | column -t
  

  
}
  

  

  
TopAndVmstat(){
  
top -d 2 -n 1 -b
  
vmstat 1 10
  
}
  

  
CheckGatherLog(){
  

  
if [ -f "$LocalServerLogPath/$GetTheIpCommand.log" ];then
  
       rm -rf $LocalServerLogPath/$GetTheIpCommand.log
  
fi
  

  
if [ ! -x "$LocalServerLogPath" ];then
  
    mkdir "$LocalServerLogPath"
  
fi
  

  
if [ ! -f "$LocalServerLogPath/$GetTheIpCommand.log" ];then
  
    touch $LocalServerLogPath/$GetTheIpCommand.log
  
    LinuxOsInformation>>$LocalServerLogPath/$GetTheIpCommand.log
  
    PerformanceInfomation>>$LocalServerLogPath/$GetTheIpCommand.log
  
    OprateSystemSec>>$LocalServerLogPath/$GetTheIpCommand.log
  
    TopAndVmstat>>$LocalServerLogPath/$GetTheIpCommand.log
  
fi
  
}
  

  
CheckGatherLog
  

  
SCP_LOG_TO_GATHER_SERVER="scp $LocalServerLogPath/$GetTheIpCommand.log root@$GatherServerIpAddress:$GatherServerLogPath"
  

  
/usr/bin/expect
页: [1]
查看完整版本: Shell-批量巡检服务器脚本