迫于代码能力太烂,求助一个公网 IP 推送的办法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
szxczyc
V2EX    程序员

迫于代码能力太烂,求助一个公网 IP 推送的办法

  •  
  •   szxczyc 2019-11-18 04:04:00 +08:00 5441 次点击
    这是一个创建于 2159 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个 ubuntu 服务器安装了 anaconda 平常用来跑跑数据,但是拿到的权限太小,没有 root 权限,只能跑代码用。蛋疼的是内网 IP 完全连不通,只能用公网 IP,时不时服务器就断一下。每次都要别人帮忙看公网 IP,太麻烦了。

    自己写了 py 代码后 crontab 每隔 10 分钟获取一次 IP 用 sever 酱推送到微信,但是有可能几天才变一次 IP,推送总要置顶,太笨。

    现在有两个更好解决方案:

    1、写一个 py 脚本,ip 变化时通知 BUT:从 members.3322.org/dyndns/getip 拿到的数据格式有点问题(b'1.1.1.1\n'),处理不了

    2、直接用 aliyunDDNS BUT:大部分需要装阿里云从 github.com/NewFuture/DDNS 拿到的 py 脚本都可以调试成功,但是定时任务 sudo ./task.sh 命令没权限

    系统调用 python 只能用 py3 自带的库,pip 之类的是不行的。 除了 py 如果有 shell 脚本也可以,谢谢!

    26 条回复    2019-11-19 10:49:02 +08:00
    mouyase
        1
    mouyase  
       2019-11-18 04:32:33 +08:00 via Android
    试试 DDNS ?
    sagaxu
        2
    sagaxu  
       2019-11-18 04:54:07 +08:00 via Android
    我用 dnspod,不用写代码,curl 定时调用
    szxczyc
        3
    szxczyc  
    OP
       2019-11-18 05:03:02 +08:00 via iPhone
    @mouyase #1 用的就是 ddns
    szxczyc
        4
    szxczyc  
    OP
       2019-11-18 05:03:30 +08:00 via iPhone
    @sagaxu #2 贴一下 github?
    jokephp
        5
    jokephp  
       2019-11-18 05:25:40 +08:00
    @szxczyc 可以用 contab 进行定时调用 curl
    jokephp
        6
    jokephp  
       2019-11-18 05:26:35 +08:00
    @jokephp crontab
    szxczyc
        7
    szxczyc  
    OP
       2019-11-18 06:01:20 +08:00
    @jokephp 代码贴一下
    eason1874
        8
    eason1874  
       2019-11-18 06:28:09 +08:00
    你这个 getip 网址返回内容只是多了个换行符,恐怕是最简单的接口了,这也处理不了吗?

    你不说你用哪个 DNS 怎么给你例子啊。用 DNSPod 就简单,鉴权就一个参数,签名都不用,从新写个例子就几分钟的事,但 DNSPod 不支持子域名接入,你要从阿里云 DNS 换过来的话得整个迁入。

    DNSPod 文档 : https://www.dnspod.cn/docs/records.html#dns
    deepdark
        10
    deepdark  
       2019-11-18 07:09:37 +08:00 via Android
    我是 crontab 每隔 5 分钟调用一次脚本,脚本内容是,获取当前公网地址,然后用 dnspod 的 api 更新 ip 地址,比较简单
    dangyuluo
        11
    dangyuluo  
       2019-11-18 07:22:39 +08:00
    直接写 shell+crontab,把 IP 保存到 /tmp/ip 文件里,然后每次对比是否变化,再用 PushBullet 推送,只需要 curl 就可以
    ik
        12
    ik  
       2019-11-18 07:30:46 +08:00 via iPhone
    计划任务不需要 sudo 权限吧?
    sutra
        13
    sutra  
       2019-11-18 07:49:41 +08:00
    找一个能用 curl 命令上报的 DDNS 服务就可以了,没必要非得用 aliyunDDNS。
    luckyc
        14
    luckyc  
       2019-11-18 08:33:38 +08:00
    dnspod aliyun 不都有 API 么.
    shell 更新 ip 不是什么难事吧.
    lbp0200
        15
    lbp0200  
       2019-11-18 08:58:47 +08:00 via iPhone
    上古时代,都是直接发邮件的
    liuky
        16
    liuky  
       2019-11-18 09:29:10 +08:00
    用 docker 部署你的 python 程序, 在你的 docker 容器里面你想怎么干就怎么干
    imdong
        17
    imdong  
       2019-11-18 09:50:11 +08:00
    继续用 server 酱,加入 IP 不变就不推送的逻辑。

    推送成功后保存到 ip.txt 文件内。

    推送前读取这个文件,如果内容一直直接退出即可。

    三行代码搞定。
    jon
        18
    jon  
       2019-11-18 09:59:19 +08:00
    lz 头像详细希望?
    a67793581
        19
    a67793581  
       2019-11-18 10:02:43 +08:00
    @imdong 思路清晰 我也怎么觉得
    shuizhengqi
        20
    shuizhengqi  
       2019-11-18 10:05:35 +08:00
    https://github.com/shuizhengqi1/aliddns 以前写过一个,只要用你的阿里云 ak 替换就行,然后里面写上你要修改的域名
    xiri
        21
    xiri  
       2019-11-18 10:22:19 +08:00
    为什么不修改推送逻辑,让它只在 ip 发生变动时才推送呢?
    只需要每次推送完之后把 ip 保存下来,然后每次检测的时候对比一下,不一样才推消息就行了
    opengps
        22
    opengps  
       2019-11-18 10:53:30 +08:00
    花生壳动态解析需要实名了,不然我会直接推荐你在目标网络内部装个花生壳
    doyel
        23
    doyel  
       2019-11-18 11:20:01 +08:00
    我上古时代自己写过个 curl 获取类似 ip138 网页内容然后截取,如果 ip 变了发邮件的。。。自己循环自己。。。10 分钟完成用了好多年。。。然后公网 IP 没了。。。
    szxczyc
        24
    szxczyc  
    OP
       2019-11-18 13:57:09 +08:00 via iPhone
    @shuizhengqi #20 pip 无权限
    Lunatic1
        25
    Lunatic1  
       2019-11-18 14:54:37 +08:00
    oceanTu
        26
    oceanTu  
       2019-11-19 10:49:02 +08:00
    freemyip.com 做 DDNS
    1. 去 www.freemyip.com 申请一个二级域名
    2. crontab 定时任务,10 分钟刷一遍
    */10 * * * * curl "https://freemyip.com/update?token=#YOUR_TOKEN#&domain=#YOUR_DDNS_NAME#.freemyip.com&myip=$(/sbin/ifconfig eno1 |/bin/grep netmask |/usr/bin/awk '{print $2}')" >/dev/null 2>&1
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5822 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 93ms UTC 02:35 PVG 10:35 LAX 19:35 JFK 22:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86