[ntfy]开机时发送当前ip和wifi名称各种信息
脚本:
#!/bin/bash
# 定义ntfy话题
TOPIC="mytopic"
# 获取WiFi名称(尝试两种不同的方法)
if command -v nmcli &> /dev/null; then
WIFI=$(nmcli -t -f active,ssid dev wifi | grep -E '^(yes|是)' | cut -d: -f2)
elif command -v iwgetid &> /dev/null; then
WIFI=$(iwgetid -r)
else
WIFI="Unknown (no nmcli or iwgetid found)"
fi
# 获取IP地址(排除本地回环地址)
IP=$(hostname -I | awk '{print $1}')
if [ -z "$IP" ]; then
IP=$(ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d'/' -f1 | head -n 1)
fi
if [ -z "$IP" ]; then
IP="Unknown"
fi
# 获取设备信息(主机名)
DEVICE="xxx"
# 构建消息
MESSAGE="wifi:$WIFI ip:$IP device:$DEVICE"
# 发送消息到ntfy话题
echo "发送消息: $MESSAGE"
curl -d "$MESSAGE" "ntfy.sh/$TOPIC"
# 检查发送是否成功
if [ $? -eq 0 ]; then
echo "消息发送成功"
else
echo "消息发送失败"
exit 1
fi
如果只要wifi:
#!/bin/bash
# 定义ntfy话题
TOPIC="mytopic"
DEVICE="xxx"
# 获取WiFi名称(同时支持中英文系统)
if command -v nmcli &> /dev/null; then
WIFI=$(nmcli -t -f active,ssid dev wifi | grep -E '^(yes|是)' | cut -d: -f2)
elif command -v iwgetid &> /dev/null; then
WIFI=$(iwgetid -r)
else
WIFI="Unknown (no nmcli or iwgetid found)"
fi
# 获取IP地址(优先从无线接口获取)
IP=""
# 方法1:通过iw命令识别无线接口(最可靠)
if command -v iw &> /dev/null; then
# 获取所有无线接口名称(如wlan0、wlp3s0等)
WIFI_INTERFACES=$(iw dev | grep "Interface" | awk '{print $2}')
# 遍历无线接口,获取第一个有IP的接口
for IFACE in $WIFI_INTERFACES; do
IP=$(ip addr show "$IFACE" 2>/dev/null | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1 | head -n 1)
if [ -n "$IP" ]; then
break # 找到第一个有效IP就退出循环
fi
done
fi
# 方法2:如果iw命令不存在,通过/sys/class/net判断无线接口
if [ -z "$IP" ]; then
# 遍历所有网络接口,判断是否为无线接口
for IFACE in $(ls /sys/class/net/); do
# 无线接口通常有/sys/class/net/$IFACE/wireless目录
if [ -d "/sys/class/net/$IFACE/wireless" ]; then
IP=$(ip addr show "$IFACE" 2>/dev/null | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1 | head -n 1)
if [ -n "$IP" ]; then
break
fi
fi
done
fi
# 方法3:如果无线接口未找到,尝试有线接口(排除虚拟接口)
if [ -z "$IP" ]; then
IP=$(ip addr show | grep 'inet ' | grep -v -E 'lo|docker|vmnet|vboxnet|tun|tap' | awk '{print $2}' | cut -d'/' -f1 | head -n 1)
fi
# 最终检查
if [ -z "$IP" ]; then
IP="Unknown"
fi
# 构建消息
MESSAGE="wifi:$WIFI ip:$IP device:$DEVICE"
# 发送消息到ntfy话题
echo "发送消息: $MESSAGE"
curl -d "$MESSAGE" "ntfy.sh/$TOPIC"
# 检查发送是否成功
if [ $? -eq 0 ]; then
echo "消息发送成功"
else
echo "消息发送失败"
exit 1
fi
开机发送:
@reboot sleep 10 && /home/<username>/send_ip.sh

浙公网安备 33010602011771号