求助,请诸位大大教教我做 ddns 的 wget 脚本,文科生,实在是无力了。。。。。。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jun9100
V2EX    问与答

求助,请诸位大大教教我做 ddns 的 wget 脚本,文科生,实在是无力了。。。。。。

  •  
  •   jun9100 2014-09-03 13:04:47 +08:00 7050 次点击
    这是一个创建于 4111 天前的主题,其中的信息可能已经有所发展或是发生改变。
    wndr4300刷openwrt,因为是双拨,一条是电信,一条线是华数,其中华数的ip外网是无法连接,而且如果直接用wget更新ip就有可能抓到华数的ip,所以想指定电信出口的wan。在网上找了很多帖子和教程都无果。希望诸位大大能帮帮小弟。


    WANIF="pppoe-wan2"
    MYIP=`ifconfig ${WANIF} |grep \"inet addr\" | cut -d : -f 2 | cut -d'B' -f 1"`
    nOnceIP=`ifconfig -a|grep -A 1 $INTERFACE|grep inet|awk '{print $2}' |awk -F: '{print $2}'`
    usedIP=`cat /tmp/usedIP.txt

    if [ "$nonceIP" == "$usedIP" ]; then
    echo $nonceIP > /tmp/nonceIP.txt
    else
    wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${WANIF}&u=*****&p=******&cmd=update&offline=0'
    echo $nonceIP > /tmp/usedIP.txt
    fi
    第 1 条附言    2014-09-03 23:44:12 +08:00
    @mind3x 果然可以,真的是非常感谢。
    最终的脚本如下:
    脚本1:wget更新changeip免费ddns的主脚本
    ####################updatedns.sh###########################
    #/root/updatedns.sh

    /usr/sbin/mwan3 stop #由于mwan3强大的功能会无视我们指定的端口,所以先暂时停止mwan3
    sleep 5
    INTERFACE=pppoe-wan2 #填入自己需要强制通行的端口
    MYIP=`curl --interface pppoe-wan2 http://ifconfig.me/ip`#通过curl命令抓取我们所指定端口的网址,如果没有安装curl,记得先去安装

    nOnceIP=`ifconfig -a|grep -A 1 $INTERFACE|grep inet|awk '{print $2}' |awk -F: '{print $2}'`
    usedIP=`cat /tmp/usedIP.txt`#通过grep搜索curl获取到的myip地址,并且写入到/tmp/usedIP.txt,如果没有安装curl,记得先去安装

    if [ "$nonceIP" == "$usedIP" ]; then
    echo $nonceIP > /tmp/nonceIP.txt #判断nonceIP是否和usedIP一致,如果一致就停止更新ddns,如果不同则执行下面的wget命令
    else
    wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0' #根据自己ddns服务商不能,wget的命令也会不一样。
    fi
    sleep 5
    /usr/sbin/mwan3 start #重新启动mwan3任务
    ######################updatedns.sh############################
    这个脚本我是放在/root/updatedns.sh下,记得修改权限为0777

    脚本2:这个脚本是让/root/updatedns.sh能按计划执行的
    ######################crontab############################
    #/etc/crontabs/crontab
    */30 * * * * root /root/updatedns.sh > /dev/null 2>&1 #最前面的30是代表更新的时间间隔,30是代表30分钟。可以根据自己的需求修改。位置是放在/etc/crontabs/crontab,记得修改权限为0777
    ######################crontab############################

    最后再次感谢@mind3x给予我的帮助,也十分感谢@mind3x分享的wndr4300的openwrt固件。南无阿弥陀佛。
    用的时候记得把#后面的文字删除,这句是写给和我一样的小白的。
    最后的最后推荐一下@mind3x大大openwrt rom
    http://www.v2ex.com/t/128585#reply26
    37 条回复    2014-09-04 13:21:58 +08:00
    jun9100
        2
    jun9100  
    OP
       2014-09-03 13:44:48 +08:00
    求各位大哥帮忙的说
    mind3x
        3
    mind3x  
       2014-09-03 14:09:19 +08:00
    用curl指定outgoing interface:

    MYIP=`curl --interface pppoe-wan2 http://ifconfig.me/ip`

    我没实测,你试试看。
        4
    jun9100  
    OP
       2014-09-03 14:43:53 +08:00
    @mind3x 这个意思是通过pppoe-wan2查看ip吗?
    jun9100
    jun9100
        5
    jun9100  
    OP
       2014-09-03 14:49:48 +08:00
    @mind3x 貌似不行
    curl: can't load library 'libpolarssl.so.6'
    zro
        6
    zro  
       2014-09-03 16:01:10 +08:00
    楼主是用mwan3叠加,还是nwan呢?貌似是有指定出口的功能啊。。。
    manhere
        7
    manhere  
       2014-09-03 16:03:53 +08:00
    https://support.dnspod.cn/Support/api
    参考下面的第三方项目 根据自己的环境 稍微改改就能使用
    jun9100
        8
    jun9100  
    OP
       2014-09-03 16:22:07 +08:00
    @zro nwan3
    jun9100
        9
    jun9100  
    OP
       2014-09-03 16:25:22 +08:00
    @manhere 感觉会掉进另外一个坑?openwrt您推荐哪个教程呢?
    mhycy
        10
    mhycy  
       2014-09-03 16:34:55 +08:00
    没试过多线叠加,但按思路来说不是直接IFCONFIG电信的那个端口就能抓到电信的外网IP了么?
    然后用那个IP提交就好了
    FanError
        11
    FanError  
       2014-09-03 16:40:23 +08:00
    楼主,你的wndr4300刷的openwrt是哪个版本?稳定吗?
    FanError
        12
    FanError  
       2014-09-03 16:41:05 +08:00
    主要想问下ddns,pptp server,端口转发稳定不。
    俺现在用的是dd-wrt,想试下openwrt
    jun9100
        13
    jun9100  
    OP
       2014-09-03 17:03:38 +08:00
    @FanError 我现在用的是mind3x 大大的固件,感觉很不错,推荐使用。
    帖子如下。
    http://www.v2ex.com/t/128585#reply26
    jun9100
        14
    jun9100  
    OP
       2014-09-03 17:05:03 +08:00
    @FanError 因为我是双线拨号,系统自带的订单ddns不好用。
    不过ddns在单线单拨或者单线多拨的情况下运营如何不清楚。
    pptp我没用。不清楚。
    mind3x
        15
    mind3x  
       2014-09-03 18:36:40 +08:00
    @jun9100 看起来是从官网安装的curl需要的libpolarssl和我的编译版本里libpolarssl的版本不一致。你先暂时这样fix一下

    cd /usr/lib
    ln -s libpolarssl.so.7 libpolarssl.so.6

    因为上面的命令不会用到SSL,只要curl能跑起来就行。
    mind3x
        16
    mind3x  
       2014-09-03 18:40:26 +08:00
    @jun9100 这条命令的意思是走pppoe-wan2的出口去访问ifconfig.me这个网站,而这个网站送回的页面内容就是你的公网IP。
    jun9100
        17
    jun9100  
    OP
       2014-09-03 21:01:08 +08:00
    @mind3x 修复后测试curl已经可以用了,但是我有5个地址,其中4个获取了电信正确的地址,还有一个却还是华数的地址,无语了。
    jun9100
        18
    jun9100  
    OP
       2014-09-03 21:13:25 +08:00
    @mind3x 又测试了几次,还是同样的结果,这几次是3个电信地址,2个华数地址,杯具啊
    mind3x
        19
    mind3x  
       2014-09-03 22:46:19 +08:00
    @jun9100 我知道是为什么了,因为mwan3无视curl指定interface,还是强行做负载均衡,把连接分到不同的wan口上了。最简单的办法,是在你更新DDNS的脚本最前和最后分别mwan3 stop和mwan3 start
    jun9100
        20
    jun9100  
    OP
       2014-09-03 22:52:24 +08:00
    @mind3x 真是一语中的
    那这脚本怎么写呢,亲。
    mind3x
        21
    mind3x  
       2014-09-03 23:01:25 +08:00
    @jun9100 如我上面所说,在你这个更新DDNS的脚本最前面加上
    /usr/sbin/mwan3 stop
    (或 /etc/init.d/mwan3 stop 一个效果)

    在最后面加上
    /usr/sbin/mwan3 start
    (或 /etc/init.d/mwan3 start 一个效果)

    大约就是这样。行不行就看你的人品了。
    jun9100
        22
    jun9100  
    OP
       2014-09-03 23:05:23 +08:00
    mwan3 stop
    sleep 5
    INTERFACE=pppoe-wan2
    MYIP=`curl --interface pppoe-wan2 http://ifconfig.me/ip`

    nOnceIP=`ifconfig -a|grep -A 1 $INTERFACE|grep inet|awk '{print $2}' |awk -F: '{print $2}'`
    usedIP=`cat /tmp/usedIP.txt`

    if [ "$nonceIP" == "$usedIP" ]; then
    echo $nonceIP > /tmp/nonceIP.txt
    else
    wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0'
    wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0'
    wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0'
    wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0'
    wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0'
    echo $nonceIP > /tmp/usedIP.txt
    fi
    sleep 5
    mwan3 start
    jun9100
        23
    jun9100  
    OP
       2014-09-03 23:30:06 +08:00   1
    @mind3x 果然可以,真的是非常感谢。
    最终的脚本如下:
    脚本1:wget更新changeip免费ddns的主脚本
    ####################updatedns.sh###########################
    #/root/updatedns.sh

    /usr/sbin/mwan3 stop #由于mwan3强大的功能会无视我们指定的端口,所以先暂时停止mwan3
    sleep 5
    INTERFACE=pppoe-wan2 #填入自己需要强制通行的端口
    MYIP=`curl --interface pppoe-wan2 http://ifconfig.me/ip`#通过curl命令抓取我们所指定端口的网址,如果没有安装curl,记得先去安装

    nOnceIP=`ifconfig -a|grep -A 1 $INTERFACE|grep inet|awk '{print $2}' |awk -F: '{print $2}'`
    usedIP=`cat /tmp/usedIP.txt`#通过grep搜索curl获取到的myip地址,并且写入到/tmp/usedIP.txt,如果没有安装curl,记得先去安装

    if [ "$nonceIP" == "$usedIP" ]; then
    echo $nonceIP > /tmp/nonceIP.txt #判断nonceIP是否和usedIP一致,如果一致就停止更新ddn,如果不同则执行下面的wget命令
    else
    wget -q -O- 'http://nic.ChangeIP.com/nic/update?hostname=******&${MYIP}&u=******&p=******&cmd=update&offline=0' #根据自己ddns服务商不能,wget的命令也会不一样。
    fi
    sleep 5
    /usr/sbin/mwan3 start #重新启动mwan3任务
    ######################updatedns.sh############################
    这个脚本我是放在/root/updatedns.sh下,记得修改权限为0777

    脚本2:这个脚本是让/root/updatedns.sh能按计划执行的
    ######################crontab############################
    #/etc/crontabs/crontab
    */30 * * * * root /root/updatedns.sh > /dev/null 2>&1 #最前面的30是代表更新的时间间隔,30是代表30分钟。可以根据自己的需求修改。位置是放在/etc/crontabs/crontab,记得修改权限为0777
    ######################crontab############################

    最后再次感谢@mind3x给予我的帮助,也十分感谢@mind3x分享的wndr4300的openwrt固件。南无阿弥陀佛。
    用的时候记得把#后面的文字删除,这句是写给和我一样的小白的。
    mind3x
        24
    mind3x  
       2014-09-04 00:33:37 +08:00
    @jun9100 补充一点,因为你已经定义了

    INTERFACE=pppoe-wan2 #填入自己需要强制通行的端口

    所以用curl取IP的时候就用这个变量,不要再写pppoe-wan2了

    MYIP=`curl --interface $INTERFACE http://ifconfig.me/ip`
    jun9100
        25
    jun9100  
    OP
       2014-09-04 09:55:36 +08:00
    @mind3x 恩恩,这就去优化脚本。
    jun9100
        26
    jun9100  
    OP
       2014-09-04 10:13:00 +08:00
    @mind3x 大大,这个脚本能否在做优化,因为停止mwan3毕竟会导致下载速度变慢,如果脚本没10分钟执行一次的话,感觉会很不爽,所以能不能把最前面的写成如下:
    if [ "$nonceIP" == "$usedIP" ]; then
    echo $nonceIP > /tmp/nonceIP.txt
    else /usr/sbin/mwan3 stop
    fi

    但是最后是/usr/sbin/mwan3 start要怎么写,我想这个也是要暂停mwan3的吧。
    jun9100
        27
    jun9100  
    OP
       2014-09-04 11:18:13 +08:00
    @mind3x
    大大,这是啥意思?
    sh: enabled: unknown operand
    mind3x
        28
    mind3x  
       2014-09-04 11:58:44 +08:00
    @jun9100 "sh"这个命令说,"enabled"这个操作数未知。检查你的脚本。
    mind3x
        29
    mind3x  
       2014-09-04 12:00:37 +08:00
    @jun9100 有很多种办法。最简单的一种是不stop mwan3,先curl个10次,取回来的IP如果次次都和以前存的不一样,再确实的stop mwan3去取确定的wan2 IP。
    mind3x
        30
    mind3x  
       2014-09-04 12:02:17 +08:00
    @jun9100 另外其实没必要10分钟检查,可以在系统通知wan2 down了又重新up的时候再去检查,不过这个三两句话说不清楚,你有兴趣的话可以自行研究...
    jun9100
        31
    jun9100  
    OP
       2014-09-04 12:28:42 +08:00
    @mind3x 是不是可以把ddns的脚本放到/etc/ppp/ip-down.d下面,我看这个帖子说只要拨号掉线就会执行/ip-down.d下面的脚本的。
    求证。http://www.openwrt.org.cn/bbs/thread-1947-1-1.html
    mind3x
        32
    mind3x  
       2014-09-04 12:42:12 +08:00
    @jun9100 放到 /etc/ppp/ip-up.d/ 里。你是需要在wan连接成功后检查,不是在wan连接断掉后检查。 官方文档在

    http://wiki.openwrt.org/doc/howto/vpn.client.pptp#etcpppip-up.and.etcpppip-down
    mind3x
        33
    mind3x  
       2014-09-04 12:43:10 +08:00
    @jun9100 不过你真的是文科生吗?你的钻研精神超过我见到的理科生平均水平很多啊。
    jun9100
        34
    jun9100  
    OP
       2014-09-04 12:48:49 +08:00
    @mind3x 真的是文科生,专业是汉语言文学
    jun9100
        35
    jun9100  
    OP
       2014-09-04 12:49:15 +08:00
    @mind3x 刚才是理解错误了 不好意思哈,脑子不好使
    mind3x
        36
    mind3x  
       2014-09-04 13:07:28 +08:00
    @jun9100 要不要考虑转行算了啊哈哈哈哈
    jun9100
        37
    jun9100  
    OP
       2014-09-04 13:21:58 +08:00
    @mind3x 真的非常感谢,已经搞定啦。
    我现在在做电商哈。哈哈。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2463 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 01:09 PVG 09:09 LAX 17:09 JFK 20:09
    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