shell脚本收集服务器基本信息并入库

# cat check_all.sh
#!/bin/bash
#create by hexm @2016.6
#date=`date +%Y%m%d`
#DIST_FILE=/app/healthcheck
#EXEC_LOG=/app/healthcheck/log/exec_$date.log

set -e

IP=`ifconfig eth1|awk -F"[ :]+" ‘NR==2{print $4}‘`

#加载变量
. /app/healthcheck/scripts/global.sh

#因rsync用户名有nobody和csocket两种,这里判断下防止被修改
CHECK_ALL_OWN=`ls -ld /app/healthcheck/ |awk ‘{print $3}‘`
rsync_user=`cat /etc/rsyncd.conf|grep uid|awk -F"[ =]+" ‘{print $NF}‘`
if [[ ${CHECK_ALL_OWN} != ${rsync_user} ]];then
  chown ${rsync_user}.${rsync_user} /app/healthcheck -R
fi

#获取CPU使用率、CPU负载
TOP_INFO(){
#TOP_DETAIL=$(/usr/bin/top -bn1 )
#CPU_USE=$(echo -e "$TOP_DETAIL" |grep "Cpu(s):" |awk ‘{print $2}‘ | tail -n1 |cut -d"%" -f 1)
TOP_DETAIL=$(/usr/bin/top -b -d 10 -n 2 )
CPU_USE=$(echo -e "$TOP_DETAIL" |grep "Cpu(s):" |awk ‘{print $2}‘ | tail -n1 |cut -d"%" -f 1)
CPU_LOAD=$(uptime | awk -F"," ‘{print $(NF-2)}‘| awk ‘{print $3}‘)
CPU_LOAD=$(echo -e "${CPU_LOAD}" | sed ‘s/[, ]//g‘)
}

#获取可用内存率
MEM(){
Free_mem=`free -m|awk -F"[ :]+" ‘NR==2{print $4+$6+$7}‘`
Totol_mem=`free -m|grep Mem |awk ‘{print $2}‘`
ava_mem=`echo "scale=2;$Free_mem/$Totol_mem*100" | bc`
MEM_FREE=${ava_mem/.*}
}

#获取读IO和写IO
IO(){
R_IO=`iostat -x|awk ‘/sda/{print $4}‘|awk ‘{sum+=$1}END{print sum/NR}‘`
W_IO=`iostat -x|awk ‘/sda/{print $5}‘|awk ‘{sum+=$1}END{print sum/NR}‘`
}

#获取磁盘可用率
#划分为"/"、"DFS"、"APP"、"FDFS"四种
DISK(){
  DISK_USE=`df -h|awk "/\/$/"‘{print $(NF-1)}‘|cut -d"%" -f 1`
  if [[ "${DISK_USE}" == "" ]];then
      echo "$IP:无/目录"  &>/dev/null
  else
      DISK_USE=${DISK_USE/.*}
      DISK_FREE=$((100-$DISK_USE))
  fi

  DISK_DFS_USE=`df -h|awk "/\/dfs/"‘{print$(NF-1)}‘|cut -d"%" -f 1`
  if [[ "${DISK_DFS_USE}" == "" ]];then
      echo "$IP:无/dfs目录"  &> /dev/null
  else
      DISK_DFS_USE=${DISK_DFS_USE/.*}
      DISK_DFS_FREE=$((100-${DISK_DFS_USE}))
  fi

  DISK_APP_USE=`df -h|awk "/\/app/"‘{print$(NF-1)}‘|cut -d"%" -f 1`
  if [[ "${DISK_APP_USE}" == "" ]];then
      echo "$IP:无/app目录"  &> /dev/null
  else
      DISK_APP_USE=${DISK_APP_USE/.*}
      DISK_APP_FREE=$((100-$DISK_APP_USE))
  fi

  DISK_FDFS_USE=`df -h|awk "/\/fdfs/"‘{print$(NF-1)}‘|cut -d"%" -f 1`
  if [[ "${DISK_FDFS_USE}" == "" ]];then
      echo "$IP:无/fdfs目录" &> /dev/null
  else
      DISK_FDFS_USE=`echo $DISK_FDFS_USE|tr " " "\n"|awk ‘{sum+=$1}END{print sum/NR}‘`
      DISK_FDFS_USE=${DISK_FDFS_USE/.*}
      DISK_FDFS_FREE=$((100-${DISK_FDFS_USE}))
  fi
}

#获取网卡单秒流量
NETWORK_FLOW(){
FLAG=`ifstat 1 1|head -1|awk ‘{print $1}‘`
if [ $FLAG == eth1 ];then
  WAN_INPUT="None"
  WAN_OUTPUT="None"
  LAN_INPUT=`ifstat 1 1 |awk ‘NR==3{print $1}‘`
  LAN_OUTPUT=`ifstat 1 1 |awk ‘NR==3{print $2}‘`
else
  WAN_INPUT=`ifstat 1 1 |awk ‘NR==3{print $1}‘`
  WAN_OUTPUT=`ifstat 1 1 |awk ‘NR==3{print $2}‘`
  LAN_INPUT=`ifstat 1 1 |awk ‘NR==3{print $3}‘`
  LAN_OUTPUT=`ifstat 1 1 |awk ‘NR==3{print $4}‘`
fi
}
MEM
TOP_INFO
DISK
NETWORK_FLOW
IO

#数据入库
TIME=`date ‘+%F %H:%M:%S‘`
mysql -u${MYSQL_USER} -p${MYSQL_PASSWD} -h${MYSQL_ADDRESS} <<EOF
use db_devops;
insert into tbl_data(IP,CPU_USE,MEM_FREE,CPU_LOAD,WAN_INPUT,WAN_OUTPUT,LAN_INPUT,LAN_OUTPUT,DISK_FREE,DISK_DFS_FREE,DISK_APP_FREE,DISK_FDFS_FREE,R_IO,W_IO,SYS_TIME,SQL_TIME)
values(‘${IP}‘,‘$CPU_USE‘,‘$MEM_FREE‘,‘$CPU_LOAD‘,‘${WAN_INPUT:-None}‘,‘${WAN_OUTPUT:-None}‘,‘${LAN_INPUT:-None}‘,‘${LAN_OUTPUT:-None}‘,‘${DISK_FREE:-None}‘,‘${DISK_DFS_FREE:-None}‘,‘${DISK_APP_FREE:-None}‘,‘${DISK_FDFS_FREE:-None}‘,‘${R_IO:-None}‘,‘${W_IO:-None}‘,‘$TIME‘,now());

EOF

# cat global.sh

#!/bin/bash
#create by hexm @2016.6
DATE=`date +%Y%m%d`
TIME=`date ‘+%F %H:%M:%S‘`
MYSQL_USER="xxx"
MYSQL_PASSWD="xxx"
MYSQL_ADDRESS="10.88.2.111"
EXEC_LOG="/app/healthcheck/log/exec_$DATE.log"
#DATA_LOG="/app/healthcheck/log/data_$DATE.log"
SOURCE_FILE="/app/healthcheck"
DIST_FILE="/app/healthcheck"
SSH_KEY="/root/.ssh/id_rsa_gongy"
#IP=`ifconfig eth1|awk -F"[ :]+" ‘NR==2{print $4}‘`
DATA_LOG="/app/healthcheck/log/${IP}_data_$DATE.log"
INSERT_SQL_LOG="/app/healthcheck/log/insertsql_$IP_$DATE.log"
时间: 2024-08-09 06:31:02

shell脚本收集服务器基本信息并入库的相关文章

linux下使用smtp+shell脚本实现服务器存活状态监控

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准, SMTP是一个相对简单的基于文本的协议.在其之上指定了一条消息的一个或多个接收者,然后消息文本会 被传输.SMTP使用TCP端口25. 一.配置环境 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) #查看系统环境 [[email prot

Linux shell脚本判断服务器网络是否可以上网

Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态 我们可以通过curl来访问 www.baidu.com,从而判断服务器网络状态是否可以畅通的 网络状态判断 #!/bin/bash #检测网络链接畅通 function network() { #超时时间 local timeout=1 #目标网站 local target=www.baidu.com #获取响应状态码 local

shell脚本生成服务器密码

#!/bin/bash len=90 str=(a b c d e f g h i j k l m n o p q r s t u vw x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0 \! \@ \# \$ \% \^ \& \* \( \) \- \_ \= \+ \\ \/ \' \" \; \: \[ \] \{ \} \, \. \?) for((i=1;i<=$l

shell脚本实例

备注:一些与传递给shell的参数相关的变量:$# 命令行参数的个数$? 调用命令的返回值$$ 当前进程的进程号$! 最后一个后台命令的进程号$0 命令行的第一个参数,也就是命令名$n 命令行的第n个参数,如果要取超过9个参数${n}$* 所有的命令行参数,等于("$1 $2...""[email protected]" 所有的命令行参数,等于("$1" "$2"...)$_ 前一个命令的最后一个命令行参数   1.     

Linux shell 脚本实例【转】

1. 写一个脚本,利用循环计算10的阶乘#!/bin/shfactorial=1for a in `seq 1 10`do       factorial=`expr $factorial \* $a`doneecho "10! = $factorial" 2. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值.直到用户输入"end"停止.#!/bin/shuns

快速获得服务器基本信息(debian centos)shell脚本

先上图后上shell脚本(适用于centos和debian系列) cat check.sh  #!/bin/bash   #-------------------------------------------------- #Date:June 15 2015 #Author:jimmygong #Mail:[email protected] #Function: #Version:1.0 #apt-get -y install dmidecode --force-yes or yum -y 

小白日记7:kali渗透测试之主动信息收集-发现(一)--二层发现:arping/shell脚本,Netdiscover,scapy

主动信息收集 被动信息收集可能不准确,可以用主动信息收集验证 特点:直接与目标系统交互通信,无法避免留下访问痕迹 解决方法:1.使用受控的第三方电脑进行探测,使用代理 (做好被封杀的准备) 2.伪造大量的来源IP进行探测,进行噪声迷惑,淹没真是的探测流量 扫描流程:发送不同的探测,根据返回结果判断目标状态[IP层->端口层->服务层] 发现 识别活着的主机,发现潜在的被攻击目标,输出结果为IP地址列表. 二层发现 数据电路层,使用ARP协议 使用场景:已经取得一台主机,进入内网,对内网进行渗透

Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

说明:  1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是指备份执行时当天的日期),最后只保留最近7天的备份 2.上传/home/osyunweibak里面的备份文件到远程FTP服务器上,并且只保留最近7天的备份. 3.FTP服务器:192.168.21.139 端口:21 账号:osyunwei 密码:123456 osyunweibak为备份文件存放目

Linux生产服务器Shell脚本分享

Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来完成工作呢?其实相对于PHP这些开发语言而言,shell主要用于数据库备份(SVN备份).计划任务(crontab).服务状态监控.FTP远程备份等.对于这些任务,shell的强大是大家都公认的,这也是每一个Linux/unix系统管理员的基本之一.现在在Windows 2008里也出现了Power