Linux系统巡检脚本

SOSO
2023-05-17 / 0 评论 / 37 阅读 / 正在检测是否收录...

1.Linux巡检脚本

支持CentOS & RockyLinux
#!/bin/bash

dnf install bc iotop 2&>/dev/null && yum install bc iotop 2&>/dev/null && apt install bc iotop 2&>/dev/null

function RED(){
  echo -e "\033[31m$@\033[0m"
}

function YEL(){
  echo -e "\033[33m$@\033[0m"
}
function GRE(){
  echo -e "\033[32m$@\033[0m"
}

function PINK(){
  echo -e "\033[35m$@\033[0m"
}


function OS_INFO(){
  #系统
  local OS_NAME=`cat /etc/os-release|awk -F'"' '{if(NR==1) print $2}'`
  #版本
  local OS_VERSION=`cat /etc/os-release|awk -F'"' '{if(NR==2) print $2}'`
  #内核
  local OS_KERNEL=`uname -r`
  #语言
  local OS_LANG=`echo $LANG`
  #日期
  local OS_DATE=`date +"%Y-%m-%d %H:%M:%S"`
  #运行时间
  local OS_UPTIME=`uptime | awk -F',' '{sub(/.*up /,"",$1);print $1'}`
  #最近一次重启时间
  local OS_REBOOT=`last reboot|head -1|awk '{print $5,$6,$7,$8,$10}'`
  #最近一次关机时间
  local OS_SHUTDOWN=`last -x|grep shutdown|head -1|awk '{print $5,$6,$7,$8,$10}'`

  YEL ""
  YEL "######################系统信息######################"
  YEL "系统:$OS_NAME"
  YEL "版本:$OS_VERSION"
  YEL "内核:$OS_KERNEL"
  YEL "语言:$OS_LANG"
  YEL "日期:$OS_DATE"
  YEL "运行时间:$OS_UPTIME"
  YEL "最近一次重启时间:$OS_REBOOT"
  YEL "最近一次关机时间:$OS_SHUTDOWN"
  YEL ""
}

function OS_HARDWARE(){
  #CPU架构
  local CPU_ARCH=`uname -m`
  #CPU型号
  local CPU_TYPE=`cat /proc/cpuinfo |grep "model name"|uniq|awk -F':' '{sub(/ /,"",$2);print $2}'`
  #CPU个数
  local CPU_NUM=`cat /proc/cpuinfo |grep 'physical id'|sort|uniq| wc -l`
  #CPU核数
  local CPU_CORE=`cat /proc/cpuinfo |grep cores|uniq|awk -F ':' '{sub(/ /,"",$2);print $2}'`
  #CPU频率
  local CPU_MHZ=`cat /proc/cpuinfo |grep "cpu MHz"|uniq|awk -F ':' '{sub(/ /,"",$2);printf "%s MHz\n",$2}'`
  #内存容量
  local MEM_SIZE=$(echo "scale=2;`cat /proc/meminfo | grep 'MemTotal:' | awk '{print $2}'`/1024/1024"|bc)
  #空闲内存
  local MEM_FREE=$(echo "scale=2;`cat /proc/meminfo | grep 'MemFree:' | awk '{print $2}'`/1048576"|bc)
  #可用内存
  local MEM_FREEE=$(echo "scale=2;`cat /proc/meminfo | grep 'MemAvailable:' | awk '{print $2}'`/1048576" | bc)
  #内存使用率
  local MEM_USE=$(awk 'BEGIN{printf "%.1f%\n",('$MEM_SIZE'-'$MEM_FREEE')/'$MEM_SIZE'*100}')
  #SWAP大小
  local MEM_SWAP_SIZE=$(echo "scale=2;`cat /proc/meminfo | grep 'SwapTotal:' | awk '{print $2}'`/1048576"|bc)
  #SWAP可用
  local MEM_SWAP_FREE=$(echo "scale=2;`cat /proc/meminfo | grep 'SwapFree:' | awk '{print $2}'`/1048576"|bc)
  #SWAP使用率
  local MEM_SWAP_USE=$(awk 'BEGIN{printf "%.1f%\n",('$MEM_SWAP_SIZE'-'$MEM_SWAP_FREE')/'$MEM_SWAP_SIZE'*100}')
  #Buffer大小
  local MEM_BUF=$(cat /proc/meminfo | grep 'Buffers:' | awk '{printf "%s KB",$2}')
  #内存Cache大小
  local MEM_CACHE=$(cat /proc/meminfo | grep '^Cached:' | awk '{printf "%s KB",$2}')
  #网卡
  local NET_DEV=`cat /proc/net/dev | awk 'NR>2 && $1 !~/lo/ {sub(/:/,"");print $1}'|grep -E '^eth|^ens'`

  RED "######################硬件信息######################"
  RED "CPU架构:$CPU_ARCH"
  RED "CPU型号:$CPU_TYPE"
  RED "CPU个数:$CPU_NUM"
  RED "CPU核数:$CPU_CORE"
  RED "CPU频率:$CPU_MHZ"
  RED "内存容量:$MEM_SIZE GB"
  RED "空闲内存:$MEM_FREE GB"
  RED "可用内存:$MEM_FREEE GB"
  RED "内存使用率:$MEM_USE"
  RED "SWAP大小:$MEM_SWAP_SIZE GB"
  RED "SWAP可用:$MEM_SWAP_FREE GB"
  RED "SWAP使用率:$MEM_SWAP_USE"
  RED "Buffer大小:$MEM_BUF"
  RED "内存Cache大小:$MEM_CACHE"
  RED "网卡:$NET_DEV"

  for i in ${NET_DEV[@]}
    do
    if [ `ip link show $i|awk 'NR==1 {print $9}'` == 'UP' ];then
      RED "网卡:$i 状态:$(ip link show $i|awk 'NR==1 {print $9}') RX:$(ethtool -g $i|grep "RX:"|tail -1|awk '{print $2}') TX:$(ethtool -g $i|grep "TX:"|tail -1|awk '{print $2}') "
    else
      echo $i &>/dev/null
    fi
    done
  RED ""
 
}

function OS_NETWORK(){
  #主机名
  local OS_HOSTNAME=`hostname`
  #IP地址
  local OS_IPADD=`hostname -I|awk '{print $1}'`
  #网关地址
  local OS_GATEWAY=`ip route|grep default &>/dev/null && ip route|grep default|awk '{print $3}'|| echo "未配置网关"`
  #DNS地址
  local OS_DNS=`cat /etc/resolv.conf |grep nameserver|uniq|awk '{printf "%s ",$2}'`


  PINK "######################网络信息######################"
  PINK "主机名:$OS_HOSTNAME"
  PINK "IP地址:$OS_IPADD"
  PINK "网关地址:$OS_GATEWAY"
  PINK "DNS地址:$OS_DNS"
  PINK "网关[$OS_GATEWAY]"
  PINK "连接情况: $(ping -t 1 -i 1 -c 5 -W 1 $OS_GATEWAY &>/dev/null && echo '正常通信' || echo '无法通信')"
  PINK ""
}

function OS_RESOURCE(){
  #系统磁盘列表
  local DISK_LIST=(`lsblk | egrep "^[a-z].*" | grep -v "^sr" | awk '{print $1}'`)
  #系统磁盘使用率情况
  local DISK_PER=(`df -h | awk 'NR>1 && $1 !~/sr/ {gsub(/%/,"",$5);print $5}'`)

  #CPU空闲率
  local CPU_FREE=$(top -d 1 -n 1 -b | awk 'NR==3{print $8}')
  # CPU使用率
  local CPU_USE=$(awk 'BEGIN{printf "%.1f%\n",100-'$CPU_FREE'}')
  #CPU_TOP_TEN
  local CPU_TOP_TEN=$(top -d 1 -n 1 -b | column -t | awk 'NR>=7 && NR<=15')

  #当前进程数
  local CPU_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $2}')
  #当前正在运行进程数
  local CPU_RUN_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $4}')
  #当前正在休眠进程数
  local CPU_SL_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $6}')
  #当前停止运行进程数
  local CPU_STOP_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print 8}')
  #当前僵尸进程数
  local CPU_ZOM_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $10}')

  GRE "######################系统资源######################"
  GRE "CPU使用率:$CPU_USE"
  GRE "CPU使用率前十进程信息:"
  GRE "$(ps -eo user,pid,pcpu,pmem,args --sort=-pcpu | head -n 10)"
  GRE "\n内存使用率前十进程信息:"
  GRE "$(ps -eo user,pid,pcpu,pmem,args --sort=-pmem | head -n 10)"
  GRE "\n磁盘IO信息:$(iotop -bon 1 &>/dev/null || echo 'iotop 未安装信息获取失败')"
  GRE "$(iotop -bon 1 &>/dev/null && iotop -bon 1 | head -n 13)"
  GRE "\n磁盘分区使用率是否正常:正常"
  for i in ${DISK_LIST[@]}
  do
    if [[ -z "$(lsblk --nodeps -no serial /dev/$i)" ]]; then
      GRE "磁盘:$i  磁盘序列号:获取信息失败"  
    else
      GRE "磁盘:$i  磁盘序列号:$(lsblk --nodeps -no serial /dev/$i)"
    fi
  done
  for i in ${DISK_PER[@]}
  do
    if [ $i -gt 80 ]; then
      RED "某分区磁盘使用率为:$i% > 80% 请及时扩容"
    fi
  done
  GRE "\n系统磁盘分区inode使用情况:"
  GRE "$(df -Thi)"
  GRE "\n系统当前进程数:$CPU_PROCESSORS"  
  GRE "系统当前进程运行数:$CPU_RUN_PROCESSORS"
  GRE "系统当前休眠进程数:$CPU_SL_PROCESSORS"
  GRE "系统当前停止进程数:$CPU_STOP_PROCESSORS"
  GRE "系统当前僵尸进程数:$CPU_ZOM_PROCESSORS"

  GRE "\n系统当前允许最大fd数量:$(cat /proc/sys/fs/file-nr | awk '{print $3}')"
  GRE "系统当前已打开fd数量:$(cat /proc/sys/fs/file-nr | awk '{print $1}')"
  GRE "系统单个进程运行打开fd数量:$(ulimit -n)"

  GRE "\n系统当前socket连接数:$(netstat -anp &>/dev/null && netstat -anp | wc -l || echo 'net-tools 未安装,获取信息失败')"
  GRE "系统 established socket数量: $(netstat -anp &>/dev/null && netstat -anp | grep "ESTABLISHED" | wc -l || echo 'net-tools 未安装,获取信息失败')"
  GRE "系统 sync socket数量:$(netstat -anp &>/dev/null && netstat -anp | grep "SYN" | wc -l || echo 'net-tools 未安装,获取信息失败')"
  GRE "系统当前已建立socket如下:"
  GRE "$(netstat -anp &>/dev/null && netstat -anp | grep ESTABLISHED | awk '{printf "  本地:%-20s <=>    外部:%-22s\n",$4,$5}' || echo '')"
  GRE ""
}
function OS_SECURITY(){
  #系统所有能登录的用户
  local OS_USER=(`cat /etc/passwd | awk -F':' '$NF !~/nologin|sync|shutdown|halt/ {print $1}'`)
  #Selinux
  local OS_SELINUX=`getenforce`
  # 防火墙状态
  local OS_FIREWALLD=`service firewalld status &>/dev/null | grep "running" && echo on || echo off`

  RED "################################# [ 系统安全巡检区 ] ######################################"
  GRE "防火墙状态: $OS_FIREWALLD"
  GRE "Selinux状态:${OS_SELINUX}\n"
  GRE "系统可登录用户数:$(cat /etc/passwd | awk -F':' '$NF !~/nologin|sync|shutdown|halt/ {print $1}' | wc -l)"
  GRE "系统可登录用户:${OS_USER[@]}"
  for i in ${OS_USER[@]}
  do
    GRE "用户 $i 最后1次登录信息: $(lastlog -u $i | awk 'NR==2')"
  done
  GRE "系统当前登录用户:"
  GRE "$(who | sed 's#[()]##g' | awk '{printf "   用户: %10s 终端: %7s 登录时间: %7s %7s 登录IP: %7s\n",$1,$2,$3,$4,$5}')"
}

function OS_SERVICE(){
  RED "################################# [ 系统服务巡检区 ] ######################################"
  GRE "自行添加"
}

if [ $(id -u -n) != "root" ]; then
  ERROR "请以ROOT用户运行这个脚本"
fi


OS_INFO
OS_HARDWARE
OS_NETWORK
OS_RESOURCE
OS_SECURITY

2.输出

[root@localhost ~]# ./check_linux.sh

######################系统信息######################
系统:CentOS Linux
版本:7 (Core)
内核:3.10.0-1160.66.1.el7.x86_64
语言:en_US.UTF-8
日期:2023-05-17 15:57:11
运行时间:139 days
最近一次重启时间:Thu Dec 29 10:36 15:57
最近一次关机时间:Thu Nov 17 16:53 16:54

######################硬件信息######################
CPU架构:x86_64
CPU型号:Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz
CPU个数:1
CPU核数:8
CPU频率:2095.082 MHz
内存容量:15.65 GB
空闲内存:8.26 GB
可用内存:8.26 GB
内存使用率:47.2%
SWAP大小:7.87 GB
SWAP可用:3.39 GB
SWAP使用率:56.9%
Buffer大小:0 KB
内存Cache大小:225948 KB
网卡:eth0
网卡:eth0 状态:UP RX:4096 TX:4096

######################网络信息######################
主机名:localhost
IP地址:192.168.1.250
网关地址:192.168.1.254
DNS地址:223.5.5.5 114.114.114.114
网关[192.168.1.254]
连接情况: 正常通信

######################系统资源######################
CPU使用率:6.2%
CPU使用率前十进程信息:
USER        PID %CPU %MEM COMMAND
root        806  1.6  0.0 /bin/bash /usr/local/VMOptimizationTools/sangfor_guest_datareport
root        807  1.3  0.0 /bin/bash /usr/local/VMOptimizationTools/sangfor_sfping
root       1117  1.3  0.0 /bin/bash /usr/local/VMOptimizationTools/sangfor_update_ipc_callback
root       1433  1.3  0.0 /bin/bash /usr/local/VMOptimizationTools/sangfor_vmconfig_ipc_callback
root       2300  1.1 30.6 /home/monitor/tomcat/jdk/jre/bin/java -Djava.util.logging.config.file=/home/monitor/tom                                                                                             cat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeral                                                                                             DHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.Secur                                                                                             ityListener.UMASK=0027 -Djava.awt.headless=true -Dignore.endorsed.dirs= -classpath /home/monitor/tomcat/bin/boots                                                                                             trap.jar:/home/monitor/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/home/monitor/tomcat -Dcatalina.home=/home/moni                                                                                             tor/tomcat -Djava.io.tmpdir=/home/monitor/tomcat/temp org.apache.catalina.startup.Bootstrap start
root       1003  1.0  0.0 /bin/bash /usr/local/VMOptimizationTools/sangfor_vm_proxyd_w
root        803  0.7  0.0 /bin/bash /usr/local/VMOptimizationTools/sangfor_vm_proxyd
root      85148  0.6  3.0 java -Dfile.encoding=utf-8 -Xmx2048m -XX:MaxPermSize=1024m -Xss5m -XX:+UseParallelGC -X                                                                                             X:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:+ExitOnOutOfM                                                                                             emoryError -cp . -jar /opt/apps/backend-1.18.6.jar
root       1189  0.5  0.0 /bin/bash /usr/local/VMOptimizationTools/sangfor_watchdog

内存使用率前十进程信息:
USER        PID %CPU %MEM COMMAND
root       2300  1.1 30.6 /home/monitor/tomcat/jdk/jre/bin/java -Djava.util.logging.config.file=/home/monitor/tom                                                                                             cat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeral                                                                                             DHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.Secur                                                                                             ityListener.UMASK=0027 -Djava.awt.headless=true -Dignore.endorsed.dirs= -classpath /home/monitor/tomcat/bin/boots                                                                                             trap.jar:/home/monitor/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/home/monitor/tomcat -Dcatalina.home=/home/moni                                                                                             tor/tomcat -Djava.io.tmpdir=/home/monitor/tomcat/temp org.apache.catalina.startup.Bootstrap start
root      29042  0.1  3.6 /usr/local/tcat/jdk/jre/bin/java -Djava.util.logging.config.file=/usr/local/tcat/conf/l                                                                                             ogging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -javaagent:/usr/local/tcat/bi                                                                                             n/FineCrack.jar -javaagent:/usr/local/tcat/bin/FineCrack.jar -javaagent:/usr/local/tcat/bin/FineCrack.jar -javaag                                                                                             ent:/usr/local/tcat/webapps/webroot/WEB-INF/lib/FineCrack.jar -javaagent:/usr/local/tcat/webapps/webroot/WEB-INF/                                                                                             lib/FineCrack.jar -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources                                                                                              -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Djava.awt.headless=true -Dignore.endorsed.dirs= -cla                                                                                             sspath /usr/local/tcat/bin/bootstrap.jar:/usr/local/tcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tcat -Dca                                                                                             talina.home=/usr/local/tcat -Djava.io.tmpdir=/usr/local/tcat/temp org.apache.catalina.startup.Bootstrap start
root      85148  0.6  3.0 java -Dfile.encoding=utf-8 -Xmx2048m -XX:MaxPermSize=1024m -Xss5m -XX:+UseParallelGC -X                                                                                             X:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:+ExitOnOutOfM                                                                                             emoryError -cp . -jar /opt/apps/backend-1.18.6.jar
polkitd   86022  0.2  2.5 mysqld
root        532  0.0  0.3 /usr/lib/systemd/systemd-journald
root      25128  0.1  0.2 /usr/local/tcat/jdk/jre/bin/java -Djava.util.logging.config.file=/usr/local/tcat/conf/l                                                                                             ogging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -javaagent:/usr/local/tcat/bi                                                                                             n/FineCrack.jar -javaagent:/usr/local/tcat/bin/FineCrack.jar -javaagent:/usr/local/tcat/webapps/webroot/WEB-INF/l                                                                                             ib/FineCrack.jar -javaagent:/usr/local/tcat/webapps/webroot/WEB-INF/lib/FineCrack.jar -Djdk.tls.ephemeralDHKeySiz                                                                                             e=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListe                                                                                             ner.UMASK=0027 -Djava.awt.headless=true -Dignore.endorsed.dirs= -classpath /usr/local/tcat/bin/bootstrap.jar:/usr                                                                                             /local/tcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tcat -Dcatalina.home=/usr/local/tcat -Djava.io.tmpdir=                                                                                             /usr/local/tcat/temp org.apache.catalina.startup.Bootstrap start
root       2210  0.3  0.2 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-curr                                                                                             ent --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docke                                                                                             r/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.                                                                                             json --selinux-enabled --log-driver=journald --signature-verification=false --storage-driver overlay2
root       2257  0.0  0.2 /usr/sbin/rsyslogd -n
root       2543  0.2  0.0 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-conta                                                                                             inerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim do                                                                                             cker-containerd-shim --runtime docker-runc --runtime-args --systemd-cgroup=true

磁盘IO信息:iotop 未安装信息获取失败


磁盘分区使用率是否正常:正常
磁盘:vda  磁盘序列号:获取信息失败

系统磁盘分区inode使用情况:
Filesystem              Type     Inodes IUsed IFree IUse% Mounted on
devtmpfs                devtmpfs   2.0M   417  2.0M    1% /dev
tmpfs                   tmpfs      2.0M     1  2.0M    1% /dev/shm
tmpfs                   tmpfs      2.0M   906  2.0M    1% /run
tmpfs                   tmpfs      2.0M    16  2.0M    1% /sys/fs/cgroup
/dev/mapper/centos-root xfs         25M  340K   25M    2% /
/dev/vda1               xfs        512K   333  512K    1% /boot
/dev/mapper/centos-home xfs        221M  168K  221M    1% /home
tmpfs                   tmpfs      2.0M     1  2.0M    1% /run/user/0
overlay                 overlay     25M  340K   25M    2% /var/lib/docker/overlay2/6e38effcd4011512f280644f2f0aac                                                                                             6fc2058dff40ede9997c5a587d00bf32b7/merged
overlay                 overlay     25M  340K   25M    2% /var/lib/docker/overlay2/7d98deda88ac959c420b3d6ad50a08                                                                                             3504a7bc60fe9e6992a74fd0538a5289a2/merged
shm                     tmpfs      2.0M     1  2.0M    1% /var/lib/docker/containers/ce22850fc84b867a3455a3652932                                                                                             cd4cccfd9af4a9537c199c272c88d94dbe27/shm
shm                     tmpfs      2.0M     1  2.0M    1% /var/lib/docker/containers/925ff26df98f4813f00173cea966                                                                                             72187452870153f6667166ce512bc582ec74/shm

系统当前进程数:219
系统当前进程运行数:1
系统当前休眠进程数:218
系统当前停止进程数:8
系统当前僵尸进程数:0

系统当前允许最大fd数量:65535
系统当前已打开fd数量:2432
系统单个进程运行打开fd数量:65535

系统当前socket连接数:102
系统 established socket数量: 2
系统 sync socket数量:0
系统当前已建立socket如下:
  本地:192.168.1.250:22      <=>    外部:192.168.1.10:61497
  本地:192.168.1.250:22      <=>    外部:192.168.1.10:61499

################################# [ 系统安全巡检区 ] ######################################
防火墙状态: off
Selinux状态:Disabled

系统可登录用户数:2
系统可登录用户:root monitor
用户 root 最后1次登录信息: root             pts/0    192.168.1.10       Wed May 17 11:42:49 +0800 2023
用户 monitor 最后1次登录信息: monitor          pts/0    192.168.1.10       Wed Aug 31 15:54:20 +0800 2022
系统当前登录用户:
   用户:       root 终端:   pts/0 登录时间: 2023-05-17   11:42 登录IP: 192.168.1.10
0

评论

博主关闭了当前页面的评论