centos7 写一个shell脚本,将当前主机IP(Shell变量配置)、CPU使用率(纯数字)、内存总量和使用量(单位B、要求精确)、硬盘总量和使用量(单位B、要求精确)使用curl json方式调用http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg(Shell变量配置),脚本每隔N秒钟执行一次(Shell变量配置),curl 超时时间为5秒,调用失败输出当前时间和错误信息到当前目录monitor_error.log日志文件(没有则创建),脚本循环调用
时间: 2023-02-09 16:50:07 浏览: 114
```
#!/bin/bash
# 设置变量
IP=$(ifconfig | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}')
CPU=$(top -bn 1 | awk 'NR>7{s+=$9} END {print s}')
MEM=$(free -b | awk 'NR==2{print $2,$3}')
DISK=$(df -B 1 | awk 'NR!=1{s+=$2;t+=$3} END {print s,t}')
URL="http://192.168.220.1:18181/jeecg-boot/luodiye/sendMsg"
INTERVAL=60
# 循环调用
while true
do
# 获取时间
DATE=$(date +"%Y-%m-%d %H:%M:%S")
# 构造json数据
JSON="{\"ip\":\"${IP}\",\"cpu\":\"${CPU}\",\"mem\":\"${MEM}\",\"disk\":\"${DISK}\"}"
# 使用curl发送请求
RESULT=$(curl -m 5 -s -d "${JSON}" ${URL})
if [ $? -ne 0 ]; then
# 发送失败,记录错误信息
echo "${DATE} ${RESULT}" >> monitor_error.log
fi
sleep ${INTERVAL}
done
```
需要注意的是,上面的脚本中使用了curl命令进行调用,如果没有安装curl的话需要先进行安装。
还需要注意的是,上面的脚本中使用了top、free、df命令来获取系统信息,需要确保这些命令能够正常使用。
最后还要注意的是,脚本中的变量都需要根据实际情况进行修改。