Shell 服务 进程 磁盘 web 网络


#!/bin/bash

# 基于 CentOS 7.5 编写

# 检测访问 web 页面
web() {
  echo "############################ web访问 ############################"
  curl "https://127.0.0.1:443" -k | grep '节点' | cut -d '>' -f2 | cut -d '<' -f1 >html_lzl.txt
  grep '堡垒' html_lzl.txt >/dev/null
  if [[ $? -eq 0 ]]; then
    echo -e
  else
    echo "无法访问web"
  fi
}

# 检测系统信息
system() {
  echo "######################### 系统信息 #########################"
  OS_TYPE=$(uname)
  OS_VER=$(cat /etc/redhat-release)
  OS_KER=$(uname -a | awk '{print $3}')
  OS_TIME=$(date +%F_%T)
  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"
}

# 检查是否可以连接外网
外网() {
  echo "######################### 访问外网 #########################"
  ping -c 1 www.baidu.com &>/dev/null
  if [ $? -eq 0 ]; then
    ping_tong=能连接网络!
  else
    ping_tong=不能连接网络!
  fi
  echo "------ 网络状态:$ping_tong   "
}



# 磁盘使用状况--存在语法错误
磁盘() {
  echo "######################### 磁盘 #########################"
  IFS=""
  for i in $(df -hP | sed 1d | awk '{print $(NF-1)"\t"$NF"\t"$(NF-2)}'); do
    DISK_UTILIZ=$(echo $i | awk '{print $1}')
    MOUNT_DISK=$(echo $i | awk '{print $2}')
    DISK_FREE=$(echo $i | awk '{print $3}')
    if [[ $(echo $DISK_UTILIZ | sed s/%//g) -gt 70 ]]; then
      echo "不正常""("$MOUNT_DISK"的使用率"$DISK_UTILIZ"较大,请注意"")"
    else
      continue
    fi
  done
  echo -e
  echo "磁盘具体使用状况:"
  df -hP | sed 1d | awk '{print $NF"分区""剩余空间"$(NF-2),"使用率"$(NF-1)}'
}

# 内存、cpu占用情况
内存() {
  echo "######################### 内存 #########################"
  RESULT=$?
  if [ ${RESULT} -eq 0 ]; then
    MEM_SUM_NUM=$(free -m | grep "Mem:" | awk -F" " '{print $2}')
    MEM_SURPLUS_NUM=$(free -m | grep "Mem:" | awk '{for(i=4;i<=NF;i++) print $i""FS;}' | awk '{a+=$1}END{print a}')
    MEM_SUM=$(free -m | grep "Mem:" | awk -F" " '{print $2"M"}')
    MEM_SURPLUS=$(free -m | grep "Mem:" | awk '{for(i=4;i<=NF;i++) print $i""FS;}' | awk '{a+=$1}END{print a"M"}')
    MEM_USED=$(echo $(($MEM_SUM_NUM - $MEM_SURPLUS_NUM)))
    PERCENT=$(printf "%d%%" $(($MEM_USED * 100 / $MEM_SUM_NUM)))
    PERCENT_NUM=$(echo $PERCENT | sed s/%//g)
    if [[ $PERCENT_NUM -lt 70 ]]; then
      MEM_STATUS=正常
    else
      MEM_STATUS=不正常
    fi
    echo "$MEM_STATUS(""总内存大小"$MEM_SUM,"剩余内存大小"$MEM_SURPLUS,"内存使用率"$PERCENT")"
  else
    MEM_SUM_NUM7=$(free -m | grep "Mem:" | awk -F" " '{print $2}')
    MEM_SURPLUS_NUM7=$(free -m | grep "Mem:" | awk -F" " '{print $4}')
    MEM_SUM7=$(free -m | grep "Mem:" | awk -F" " '{print $2"M"}')
    MEM_SURPLUS7=$(free -m | grep "Mem:" | awk -F" " '{print $4"M"}')
    MEM_USED7=$(echo $(($MEM_SUM_NUM7 - $MEM_SURPLUS_NUM7)))
    PERCENT7=$(printf "%d%%" $(($MEM_USED7 * 100 / $MEM_SUM_NUM7)))
    PERCENT_NUM7=$(echo $PERCENT7 | sed s/%//g)
    if [[ $PERCENT_NUM7 -lt 70 ]]; then
      MEM_STATUS=正常
    else
      MEM_STATUS=不正常
    fi
    echo "$MEM_STATUS(""总内存大小"$MEM_SUM7,"剩余内存大小"$MEM_SURPLUS7,"内存使用率"$PERCENT7")"
  fi
}

# 检测 mongodb 服务,以及mongodb 服务状态
mongodb() {
  echo "############################ mongodb 服务检查 ############################"
  
  ps aux | grep -v grep | grep mongodb.conf >/dev/null
  if [[ $? -eq 0 ]]; then
    echo "mongodb.conf 存在"
  else
    echo "mongodb.conf 不存在"
  fi

  mongodb=$(systemctl status mongodb | grep Active | awk '{print $3}' | cut -d "(" -f2 | cut -d ")" -f1)
  if [ "$mongodb" == "running" ]; then
    echo "mongodb 服务状态: $mongodb!"
  else
    echo "mongodb 服务状态: $mongodb!"
  fi
}

# 检测进程是否存在
进程() {
  echo "################## pm2 ###################"
  # pm2
  ps aux | grep -v grep | grep pm2 >/dev/null
  if [[ $? -eq 0 ]]; then
    echo "pm2 进程存在"
  else
    echo "pm2 进程不存在"
  fi
}

case "$1" in
-/)
  磁盘
  ;;
-all)
  system
  外网
  配置
  内存
  进程

  ;;

esac