# shell腳本-監控多台伺服器磁碟利用率 ## 介紹 > 第一步:實現免密登錄伺服器 ,為後續腳本免密登錄做好準備。 > > 第二步:把要監控伺服器的ip地址 root用戶 埠port 寫入host.info文件中以便後續腳本從這個文件讀取伺服器信息。 > > 第三步:寫shell腳本,先從h ...
shell腳本-監控多台伺服器磁碟利用率
介紹
第一步:實現免密登錄伺服器 ,為後續腳本免密登錄做好準備。
第二步:把要監控伺服器的ip地址 root用戶 埠port 寫入host.info文件中以便後續腳本從這個文件讀取伺服器信息。
第三步:寫shell腳本,先從host.info中拿到信息連接各個伺服器,讀取每個伺服器的磁碟使用率,大於一定值(80%)則報警
第一步:免密登錄
測試192.168.70.24 登錄 192.168.70.25
在24機器上執行:
ssh-keygen
一路回車
在用戶根目錄下的.ssh目錄下可以看到生成2個文件:id_rsa(私鑰文件)、id_rsa.pub(公鑰文件)我們需要的是公鑰文件。
[root@zabbix-agent02 ~]# ls .ssh/ id_rsa id_rsa.pub known_hosts
將本機(24機器)剛纔生成的公鑰copy到25機器 會提示輸入25機器密碼 輸入密碼即可
ssh-copy-id [email protected]
在25機器上 .ssh/authorized_keys 文件是否生成並含內容
[root@localhost ~]# cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGg+cD6QLZ3/fBxcRDbvEaMjhl+byslM+6o87dZh0AUiuRxqakTCYBEmhgzA/6giUcMKfymvqshncOWw0i0cS310pY+o2DK56o1oizxCOmmBHk81bl6MdbRnUk9WOj5IKPSXsnr3tmcguaUlA0Y7VVJmNy3fHQ41Oo29VxjBy9GPxc2N65I33LUzzPNEjJjp3gHMAAkxGRkuI49UybplyAXNkb7RHnGq/ZDBJtNIrhXPIMOsWURVAZePGrvQYa/RpxpxfmJx6QuE8YNU6EP7S8l6u90piPxsRyGr624NKXbiI/rxCvDrfGXcIwbIs2Cao+g6cJcRVFdU2SDwkwIQgf root@localhost
可以直接在24機器上使用命令登錄25機器
[root@localhost ~]# ssh [email protected] Last login: Tue Jul 11 00:53:57 2023 from 192.168.70.1 [root@localhost ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.70.25 netmask 255.255.255.0 broadcast 192.168.70.255
第二步:創建伺服器信息文件
這裡我host.info文件和shell腳本文件都創建再/opt/scripts/文件夾下,並加入22機器兩台機器一起測試,22機器人也需要進行第一步,為免密登錄做好準備,與上述第一步內容一致不再重覆。
[root@localhost scripts]# vim host.info 192.168.70.25 root 22 192.168.70.22 root 22
第三步:創建shell腳本文件
#!/bin/bash HOST_INFO=host.info IP_LIST=`awk '/^[^#]/{print $1}' $HOST_INFO` # 連接伺服器查看磁碟使用情況 for IP in $IP_LIST;do USER=`awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO` PORT=`awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO` TMP=/tmp/disk.tmp ssh -p $PORT $USER@$IP 'df -h' > $TMP # 檢測磁碟使用率,超過一定值 報警 USE_RATE_LIST=`df -h | awk '/^\/dev/{print $NF"="int($5)}'` # USE_RATE_LIST中是一個數組 需要遍歷取出中的設備所對應的使用率 for USE_RATE in $USE_RATE_LIST;do # %=* 解釋: 以“=”為分隔符,去除右邊所有 # #*= 解釋: 以“=“為分隔符,去除左邊所有 # RART_NAME=${USE_RATE%=*} part_name=${USE_RATE%=*} use_rate=${USE_RATE#*=} if [ $use_rate -gt 80 ];then echo ”Warning: $part_name = $use_rate Partition use_rate more then $use_rate %!“ else echo "$part_name = $use_rate" fi done done
[root@localhost scripts]# bash 7.sh / = 14 /boot = 14 / = 14 /boot = 14