openwrt 实现通过邮件的方式来获取 IP

2023-06-27 17:32:52 +08:00
 huangya

鉴于 ddns 配置麻烦的问题,或者被 block 的问题,我在想是否可以通过脚本调用命令行邮件程序来报告 wan 口 ip. 有人实现过吗? 10 分钟报告一次,或者更高级一点的逻辑是检测到 ip 有变化才报告。

1935 次点击
所在节点    OpenWrt
13 条回复
MeteorVIP
2023-06-27 17:44:15 +08:00
脚本检测 ipv6 改变了则发生新 IP 的微信
renfei
2023-06-27 17:48:47 +08:00
那就写个 sh 脚本呗,我自己用的获取方式是:
curl ip.renfei.net -H "Accept:text"
wonderblank
2023-06-27 17:49:17 +08:00
```
root@main:/etc/hotplug.d/iface# cat /etc/hotplug.d/iface/30-ntfy.sh
#!/bin/sh

[ "$ACTION" = ifup -o "$ACTION" = ifupdate ] || exit 0
[ "$ACTION" = ifupdate -a -z "$IFUPDATE_ADDRESSES" -a -z "$IFUPDATE_DATA" ] && exit 0

ipv4=$(/sbin/ifstatus wan | jq -r '."ipv4-address"[0] | .address')
ipv6=$(/sbin/ifstatus wan_6 | jq -r '."ipv6-address"[0] | .address')

[ $ipv6 = 'null' ] && exit 0
[ $ipv4 = 'null' ] && exit 0

curl \
-H "Title: main ip addresses are changed" \
-H "Priority: default" \
-H "Tags: main" \
-d "IPv4: $ipv4, IPv6: $ipv6" \
ntfy.sh/hello

logger -t ntfy.sh "Sending ip addresses notification, ipv4: $ipv4, ipv6: $ipv6"
```
wonderblank
2023-06-27 17:50:18 +08:00
```
root@main:/etc/hotplug.d/iface# curl ipip.ee
xxxxxx

root@main:/etc/hotplug.d/iface# curl ipv6.ipip.ee
xxx
```
huangya
2023-06-27 18:17:30 +08:00
@wonderblank 以前没有接触过 ntfy 。刚搜索了一下,如果要保证完全的隐私,是不是要自己搭建一个公网 server 才能保证隐私。如果用官方的,那只能相信官方了,且密码(也就是主题)要强一点,是吗?
huangya
2023-06-27 18:18:15 +08:00
@renfei 你这个是获取 IP ,没有推送到邮件或者其他渠道吧?
wonderblank
2023-06-27 18:42:02 +08:00
一条 IP 地址而已,无所谓。自己机器防火墙记得加固好就行。
renfei
2023-06-27 20:51:34 +08:00
@huangya

echo $(curl ip.renfei.net -H "Accept:text") | mail -s "IP" 16076276@qq.com

邮箱换成自己的,然后需要指定 IPv4 或 IPv6 的话更换为

ipv4.renfei.net
ipv6.renfei.net
Jirajine
2023-06-27 20:55:08 +08:00
@huangya 你把自己的 ip 信息,发送到 ddns 服务商、邮件服务商、ntfy.sh 的区别是什么?
datocp
2023-06-27 22:11:13 +08:00
邮件这就厉害了,又是 smtp 又是邮件终端,不知道要浪费多少空间。
至于 ddns ,用的 ipignorelist.com


# cat /ddns.sh
#!/bin/sh
cd /tmp;ip1=`nslookup xxx.ignorelist.com 114.114.114.114 | sed -n "5p" | cut -d " " -f3`;
#ip2=` ifconfig pppoe-wan | grep addr|cut -d":" -f2|awk '{ print $1}'`
wget -4 -O /tmp/ip.tmp http://checkip.dyndns.com
ip2=`cat /tmp/ip.tmp|cut -d "<" -f7|awk '{ print $4}'`
if [ "$ip1" != "$ip2" ];then
wget -4 -O /tmp/ddns.tmp https://freedns.afraid.org/dynamic/update.php?MW
mu2er
2023-06-27 22:38:27 +08:00
IP 地址不是频繁更换的话记得 openwrt 都有 pushbot 跟 serverchan 的插件可以给微信钉钉 telegram 这些的定时推送消息。
也可以在扩展里设置 IP 变动推送消息。
serverchan 可以自定义推送途径,比 pushbot 多了点自定义。
huangya
2023-06-28 10:04:41 +08:00
@Jirajine 你说的也有道理。可能我当时发表评论的时候本能地认为 ddns 服务商,邮件服务商比较传统,久经考验了吧。还有些邮件服务器比较大,信誉高
qfdk
2023-06-28 10:14:09 +08:00
这个... 不是路由器固件里面有个么…… 你找个叫做老毛子的固件. 然后里面的代码复制出来 里面是检测到 ip 变换就会给你 curl 更新 dns 解析. 你这里换成 brak 推送啥的都可以

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/952155

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX