5ol.cc 发表于 2018-8-2 13:33:48

PUPPET-通过配置服务器对多台服务器巡检

  #!/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#生成报告
页: [1]
查看完整版本: PUPPET-通过配置服务器对多台服务器巡检