[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
posted @ 2025-07-26 19:41  教教我深度学习  阅读(29)  评论(0)    收藏  举报