翼度科技»论坛 云主机 LINUX 查看内容

shell脚本-监控多台服务器磁盘利用率

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
shell脚本-监控多台服务器磁盘利用率

介绍

第一步:实现免密登录服务器 ,为后续脚本免密登录做好准备。
第二步:把要监控服务器的ip地址 root用户 端口port 写入host.info文件中以便后续脚本从这个文件读取服务器信息。
第三步:写shell脚本,先从host.info中拿到信息连接各个服务器,读取每个服务器的磁盘使用率,大于一定值(80%)则报警
第一步:免密登录

测试192.168.70.24 登录 192.168.70.25
在24机器上执行:
  1. ssh-keygen
复制代码
一路回车
在用户根目录下的.ssh目录下可以看到生成2个文件:id_rsa(私钥文件)、id_rsa.pub(公钥文件)我们需要的是公钥文件。
  1. [root@zabbix-agent02 ~]# ls .ssh/
  2. id_rsa  id_rsa.pub  known_hosts
复制代码
将本机(24机器)刚才生成的公钥copy到25机器   会提示输入25机器密码 输入密码即可
  1. ssh-copy-id root@192.168.70.25
复制代码
在25机器上 .ssh/authorized_keys 文件是否生成并含内容
  1. [root@localhost ~]# cat .ssh/authorized_keys
  2. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGg+cD6QLZ3/fBxcRDbvEaMjhl+byslM+6o87dZh0AUiuRxqakTCYBEmhgzA/6giUcMKfymvqshncOWw0i0cS310pY+o2DK56o1oizxCOmmBHk81bl6MdbRnUk9WOj5IKPSXsnr3tmcguaUlA0Y7VVJmNy3fHQ41Oo29VxjBy9GPxc2N65I33LUzzPNEjJjp3gHMAAkxGRkuI49UybplyAXNkb7RHnGq/ZDBJtNIrhXPIMOsWURVAZePGrvQYa/RpxpxfmJx6QuE8YNU6EP7S8l6u90piPxsRyGr624NKXbiI/rxCvDrfGXcIwbIs2Cao+g6cJcRVFdU2SDwkwIQgf root@localhost
复制代码
可以直接在24机器上使用命令登录25机器
  1. [root@localhost ~]# ssh root@192.168.70.25
  2. Last login: Tue Jul 11 00:53:57 2023 from 192.168.70.1
  3. [root@localhost ~]#  ifconfig
  4. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  5.      inet 192.168.70.25  netmask 255.255.255.0  broadcast 192.168.70.255
复制代码
第二步:创建服务器信息文件

这里我host.info文件和shell脚本文件都创建再/opt/scripts/文件夹下,并加入22机器两台机器一起测试,22机器人也需要进行第一步,为免密登录做好准备,与上述第一步内容一致不再重复。
  1. [root@localhost scripts]# vim host.info
  2. 192.168.70.25 root 22
  3. 192.168.70.22 root 22
复制代码
第三步:创建shell脚本文件

  1. #!/bin/bash
  2. HOST_INFO=host.info
  3. IP_LIST=`awk '/^[^#]/{print $1}' $HOST_INFO`
  4. # 连接服务器查看磁盘使用情况
  5. for IP in $IP_LIST;do
  6.         USER=`awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO`
  7.         PORT=`awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO`
  8.         TMP=/tmp/disk.tmp
  9.         ssh -p $PORT $USER@$IP 'df -h' > $TMP
  10.         # 检测磁盘使用率,超过一定值 报警
  11.         USE_RATE_LIST=`df -h | awk '/^\/dev/{print $NF"="int($5)}'`
  12.         # USE_RATE_LIST中是一个数组 需要遍历取出中的设备所对应的使用率
  13.         for USE_RATE in $USE_RATE_LIST;do
  14.                 # %=* 解释: 以“=”为分隔符,去除右边所有
  15.                 # #*= 解释: 以“=“为分隔符,去除左边所有
  16.                 # RART_NAME=${USE_RATE%=*}
  17.                 part_name=${USE_RATE%=*}
  18.                 use_rate=${USE_RATE#*=}
  19.                 if [ $use_rate -gt 80 ];then
  20.                         echo ”Warning: $part_name = $use_rate Partition use_rate more then $use_rate %!“
  21.                 else
  22.                         echo "$part_name = $use_rate"
  23.                 fi
  24.         done
  25. done
复制代码
  1. [root@localhost scripts]# bash  7.sh
  2. / = 14
  3. /boot = 14
  4. / = 14
  5. /boot = 14
复制代码

来源:https://www.cnblogs.com/xuxuxuxuxu/p/17546202.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具