您现在的位置是:首页 > 随手笔记网站首页随手笔记
[Ubuntu] 系统网络状态定时上报脚本
一、改用 /usr/local/bin 目录(无权限问题)这个目录是系统专门放脚本的地方,不会提示无权限。1. 创建脚本sudo nano /usr/local/bin/network_monitor.sh把下面完整内容粘...
一、改用 /usr/local/bin 目录(无权限问题)
这个目录是系统专门放脚本的地方,不会提示无权限。
1. 创建脚本
sudo nano /usr/local/bin/network_monitor.sh
# 清空文件内容,保留文件本身
sudo truncate -s 0 /usr/local/bin/network_monitor.sh
把下面完整内容粘贴进去:
#!/bin/bash
URL="http://hik.jinggu.net/jgyd.php"
while true; do
# 1. 获取所有本机IP (逗号分隔)
LOCAL_IP=$(hostname -I | tr ' ' ',' | sed 's/,$//')
# 2. 获取所有网关IP (逗号分隔)
GATEWAY=$(ip route show default | awk '/default/ {print $3}' | tr '\n' ',' | sed 's/,$//')
GATEWAY=${GATEWAY:-"未获取到"}
# 3. 获取所有网关MAC (逗号分隔)
GATEWAY_MAC=""
for gw in $(ip route show default | awk '/default/ {print $3}'); do
ping -c 1 -W 1 $gw >/dev/null 2>&1
mac=$(ip neigh show $gw | awk '{print $5}' | grep -E '^[0-9a-fA-F]' | head -n1)
if [ -n "$mac" ]; then
GATEWAY_MAC="$GATEWAY_MAC,$mac"
fi
done
GATEWAY_MAC=$(echo $GATEWAY_MAC | sed 's/^,//')
GATEWAY_MAC=${GATEWAY_MAC:-"未获取到"}
# 4. 公网IP
PUBLIC_IP=$(curl -s --max-time 3 ifconfig.me 2>/dev/null || echo "获取失败")
# 5. 主机名
HOSTNAME=$(hostname)
# 6. 本机MAC
MAC=$(ip link show $(ip route get 1.1.1.1 | awk '{print $5}') | awk '/link\/ether/ {print $2}')
MAC=${MAC:-"未获取到"}
# ====================== 网络延时检测 ======================
# 检测网络延时,单位:毫秒,超时显示 超时(ms)
NET_STATUS=$(ping -c 2 -W 2 monitor.ynjy.cn | awk -F'/' 'END {print $5 "ms"}' 2>/dev/null)
# 如果获取失败,标记为超时
if [ -z "$NET_STATUS" ] || [ "$NET_STATUS" = "ms" ]; then
NET_STATUS="超时"
fi
# ==========================================================
# 7. 系统启动时间(新增)
BOOT_TIME=$(uptime -s)
BOOT_TIME=${BOOT_TIME:-"未获取到"}
# 8. 当前时间
NOW=$(date '+%Y-%m-%d %H:%M:%S')
# 9. 上报数据(完整版 + 新增启动时间)
curl -s -X POST \
-H "Content-Type: application/json" \
-d "{
\"hostname\":\"$HOSTNAME\",
\"local_ip\":\"$LOCAL_IP\",
\"gateway\":\"$GATEWAY\",
\"gateway_mac\":\"$GATEWAY_MAC\",
\"mac\":\"$MAC\",
\"public_ip\":\"$PUBLIC_IP\",
\"net_status\":\"$NET_STATUS\",
\"boot_time\":\"$BOOT_TIME\",
\"time\":\"$NOW\"
}" \
--max-time 5 "$URL"
sleep 60
done按 Ctrl+O → 回车 → Ctrl+X 保存退出。
2. 赋予执行权限
sudo chmod +x /usr/local/bin/network_monitor.sh
3. 安装依赖
sudo apt update sudo apt install curl -y
4. 测试运行(不会再报权限错)
/usr/local/bin/network_monitor.sh
二、设置开机自启(后台永久运行)
sudo nano /etc/systemd/system/network-monitor.service
粘贴内容:
[Unit] Description=Network Monitor After=network.target [Service] ExecStart=/usr/local/bin/network_monitor.sh Restart=always User=root [Install] WantedBy=multi-user.target
启动服务
sudo systemctl daemon-reload sudo systemctl enable network-monitor sudo systemctl start network-monitor
查看状态
sudo systemctl status network-monitor
重启服务
sudo systemctl restart network-monitor
✅ 现在完全正常了
不会再提示
/home 无权限每分钟自动获取:内网 IP、公网 IP、网络状态
开机自启、断网重试、后台稳定运行
相关文章
文章评论 (0)
- 这篇文章还没有收到评论,赶紧来抢沙发吧~

