如何获得wan口的public ipv4地址

2023-05-17 14:40:49 3点赞 13收藏 0评论

这是一篇非常没用的文章,只是用来水金币的。

能受益于该文章的只有符合以下全部条件的人:

1.宽带有动态公网IP

2.死都不想用DDNS

3.想在外面远程访问

4.不会用Chat gpt

5.Headless Linux服务器

在没有用ddns之前我有想过尝试这方法,但是啊,这方法除了不需要域名之外完全被ddns吊打,ddns真的是太香了,所以你懂的,这文章真的是水文。

我搜索过在Linux里用Shell怎么获得ip,搜索引擎推送的文章告诉我用ip addr,的确显示ip了,甚至连ipv6的global address都有了,但是却没有显示ipv4的公网ip。然后我又搜索用Shell怎么获得ipv4公网ip,所有的推送都告诉我需要用第三方才能查到,那就用第三方吧。第三方有这几种:

1.路由器

2.第三方网站

3.DNS服务器

用路由器的话,那路由器得有ssh或者telnet的功能,我的没有,pass。

用第三方网站的话,安全吗?

用那就剩下DNS服务器了,反正我每天都用,对面早就摸清我的老底了。

我搜索到的DNS服务器有cloudflare、opendns还有谷歌。经过我反复测试的结果是谷歌最靠谱,cloudflare有时会无法解析,opendns甚至无视我。但是我在zdm又不能写谷歌的,因为会警告我,而且不让文章发表,别问我怎么知道的。所以我就用cloudflare的来写,如果你们想知道搜索关键词是什么的话请搜索dig whoami。

dig @1.1.1.1 ch txt whoami.cloudflare +short

执行这命令,就会显示你ipv4的公网ip了。

好了,这文章结束了。是不是很水,我写了那么多废话其实只需要用一行命令就能总结。

但是啊,你在家里知道了公网ip有什么用,你在内网直接用内网地址访问自己的服务器不就行了。那把这地址记在手机上,然后出门访问呢?当然可以,但是别忘了自己的公网ip是会变的,你想想自己不在家然后公网变了怎么办,这情况可能只有第三方服务商的vnc可以救你,但是你的Linux服务器上有GUI吗有装vnc吗。所以这文章还能接着写。

解决的方法很简单,那就是让你的服务器反复的运行那命令,然后当ip改变后,发个消息给你。当然发消息得依赖第三方服务,毕竟你懂的,你要远程访问self host的服务,你得知道服务器ip是什么。第三方服务很多的,你们怎么喜欢怎么来,我用pushplus演示。反复运行命令当然是用cron job方便,我相信所有Linux系统都会有的。

好了,开始写解决的方法。

首先得要用个文件存变化前的ip地址,就叫ipv4.txt吧。因为你懂的,你运行完上面的命令后就显示下就没了,服务器并不记得下次运行那命令时之前的ip是什么,那样的话,每运行一次那命令就提醒能一次。

然后再建个文件存要执行的命令,就叫getip.py。和之前一样,你们喜欢哪种语言就用哪种,我用Python演示。

假设服务器上的用户名是test,我把那2个文件放进了一个叫ip的文件夹,那2个文件所在文件夹的绝对路径就是/home/test/ip/,如果你不知道自己所在位置的话就用pwd命令。

因为我不想解释Python,所以我直接丢代码出来,然后说下要改哪些地方。

#! /usr/bin/env python3

# encoding:utf-8

import subprocess

import requests

ip_dir = '$PWD'

dns_request = 'dig @1.1.1.1 ch txt whoami.cloudflare +short'

old_ip = open(ip_dir+'ipv4.txt','r',encoding='UTF-8')

get_new_ip = subprocess.check_output(['bash','-c',dns_request])

convert_type = get_new_ip.decode()

new_ip = convert_type.replace('"','')

token = 'youtoken'

title = 'update'

content = 'new%20public%20address%20is%3A' + new_ip

url = 'http://www.pushplus.plus/send?token=' + token + '&title=' + title + '&content=' + content

if old_ip != new_ip:

requests.get(url)

update_ip = open(ip_dir+'ipv4.txt','w',encoding='UTF-8')

update_ip.write(new_ip)

update_ip.close()

如何获得wan口的public ipv4地址

首先我是用Ubuntu运行Python时得用python3所以才写/usr/bin/env python3,如果你是用其它Linux的话可能直接写/usr/bin/env python就行,具体自己查。

然后要把ip_dir的''里的$PWD改成文件所在的绝对路径,如果你运行pwd命令的话,最后的/会被省掉,记得补上。

如果你想换个DNS服务商的话,请先运行下那命令,确保可以正确获得ip,然后把dns_request的''里的命令替换掉就行。

然后把token的''里的youtoken换成你的token。

好了就保存,为了确保这py文件可以执行,运行下chmod +x /home/test/ip/getip.py。然后现在试试这py有没有出错,运行下/home/test/ip/getip.py,再看看pushplus上有没有收到消息,如果没有检查下你是不是把'给删掉了,或者少了/,或者还有可能就是平台修改了代码,记得和图片对比下。如果你收到消息但是不是你的公网ip,那就表示cloudflare抽风了,你可以换个DNS服务商。要注意下记得把/home/test/ip/换成你的绝对路径。我确定这代码可以用,我测试了3次,都成功了。

成功发送消息后,就该用cron job定时运行py脚本了。

运行crontab -e,首次使用时可能会问用什么editor,我是选nano,你们选什么是你们的事。然后移动到最下面加入这行:

*/15 * * * * /home/test/ip/getip.py

然后保存。然后运行crontab -l,是小写的L,确认把任务加上去了。记得换成你的绝对路径。

好了,如果没有出问题,那每15分钟就会运行1次那代码,然后如果你的ipv4公网ip改变就会发送消息到pushplus给你。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

WPS 金山软件 WPS 超级会员 3年卡

WPS 金山软件 WPS 超级会员 3年卡

暂无报价

WPS 金山软件 AI会员1年 金山办公软件官方正版

WPS 金山软件 AI会员1年 金山办公软件官方正版

97.6元起

Microsoft 微软 OFFICE 365 家庭版 会员

Microsoft 微软 OFFICE 365 家庭版 会员

239元起

Microsoft 微软 Office 2016 电子版 送outlook

Microsoft 微软 Office 2016 电子版 送outlook

89元起

Microsoft 微软 OFFICE 365 个人版 办公软件

Microsoft 微软 OFFICE 365 个人版 办公软件

229元起

WPS 金山软件 超级会员2年卡 赠AI会员

WPS 金山软件 超级会员2年卡 赠AI会员

暂无报价

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

268元起

Microsoft 微软 Office365 个人版 3个月密钥 笔记本电脑 台式机平板 办公必备

Microsoft 微软 Office365 个人版 3个月密钥 笔记本电脑 台式机平板 办公必备

128元起

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

279元起

Microsoft 微软 Office 家庭和学生版 2021 彩盒包装 适用Windows/MAC

Microsoft 微软 Office 家庭和学生版 2021 彩盒包装 适用Windows/MAC

暂无报价

WPS超级会员4年套餐pdf转word排版PPT润色模板素材

WPS超级会员4年套餐pdf转word排版PPT润色模板素材

暂无报价

WPS 金山软件 超级会员季卡

WPS 金山软件 超级会员季卡

59元起

WPS稻壳会员1年套餐PPT模板素材字体美化图标思维导图官方正版

WPS稻壳会员1年套餐PPT模板素材字体美化图标思维导图官方正版

68元起

【买一得二】WPS联合会员 超级会员年卡+网易云音乐年卡 WPS超级会员年卡(赠7天)+网易云音乐年卡

【买一得二】WPS联合会员 超级会员年卡+网易云音乐年卡 WPS超级会员年卡(赠7天)+网易云音乐年卡

暂无报价

365office365OfficePLUS Microsoft365 12 -

365office365OfficePLUS Microsoft365 12 -

259元起

Microsoft 微软 在线发 office365个人版续费新订microsoft365个人版

Microsoft 微软 在线发 office365个人版续费新订microsoft365个人版

229元起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
13
扫一下,分享更方便,购买更轻松