首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   szxczyc · 19 天前 · 2894 次点击

    有个 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
        1
    mouyase   19 天前 via Android
    试试 DDNS ?
        2
    sagaxu   19 天前 via Android
    我用 dnspod,不用写代码,curl 定时调用
        3
    szxczyc   19 天前 via iPhone
    @mouyase #1 用的就是 ddns😅
        4
    szxczyc   19 天前 via iPhone
    @sagaxu #2 贴一下 github?
        5
    jokephp   19 天前
    @szxczyc 可以用 contab 进行定时调用 curl
        6
    jokephp   19 天前
    @jokephp crontab
        7
    szxczyc   19 天前
    @jokephp 代码贴一下
        8
    eason1874   19 天前
    你这个 getip 网址返回内容只是多了个换行符,恐怕是最简单的接口了,这也处理不了吗?

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

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

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

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

    三行代码搞定。
        18
    jon   19 天前
    lz 头像详细希望?
        19
    a67793581   19 天前
    @imdong 思路清晰 我也怎么觉得
        20
    shuizhengqi   19 天前
    https://github.com/shuizhengqi1/aliddns 以前写过一个,只要用你的阿里云 ak 替换就行,然后里面写上你要修改的域名
        21
    xiri   19 天前
    为什么不修改推送逻辑,让它只在 ip 发生变动时才推送呢?
    只需要每次推送完之后把 ip 保存下来,然后每次检测的时候对比一下,不一样才推消息就行了
        22
    opengps   19 天前
    花生壳动态解析需要实名了,不然我会直接推荐你在目标网络内部装个花生壳
        23
    doyel   19 天前
    我上古时代自己写过个 curl 获取类似 ip138 网页内容然后截取,如果 ip 变了发邮件的。。。自己循环自己。。。10 分钟完成用了好多年。。。然后公网 IP 没了。。。
        24
    szxczyc   19 天前 via iPhone
    @shuizhengqi #20 pip 无权限
        26
    oceanTu   18 天前
    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
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2457 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 27ms · UTC 09:41 · PVG 17:41 · LAX 01:41 · JFK 04:41
    ♥ Do have faith in what you're doing.