ROS的DDNS脚本

ROS使用ADSL上网时,每次拨号IP都会改变,导致外网访问ROS服务器失败,目前最常见的解决方案是使用DDNS这种动态域名工具,在拨号后(IP发生变化后)通知DDNS服务器更新IP,最终使用DDNS服务商提供的静态域名即可永久访问这台服务器。ROS官方仅支持changeip,但通过其它方法也可以实现支持花生壳,测试通过的脚本如下:

一、国外changeip的脚本,修改自changeip官方网站:

 1 # Define User Variables
 2 :global ddnsuser "user"
 3 :global ddnspass "password"
 4 :global ddnshost "xxxx.onmypc.org"
 5 :global ddnsinterface "changkuan"
 6
 7 # Define Global Variables
 8 :global ddnsip
 9 :global ddnslastip
10
11 :if ([ :typeof $ddnslastip ] = nothing ) do={ :global ddnslastip "0" }
12
13 # Grab the current IP address on that interface.
14 :global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface ] address ]
15 :log info $ddnsip
16 # Did we get an IP address to compare?
17 :if ([ :typeof $ddnsip ] = nil ) do={
18    :log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.")
19 } else={
20
21   :if ($ddnsip != $ddnslastip) do={
22
23     :log info "DDNS: Sending UPDATE!"
24     :log info [ :put [/tool dns-update name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip "/"] ] key-name=$ddnsuser key=$ddnspass ] ]
25     :global ddnslastip $ddnsip
26
27   } else={
28     :log info "DDNS: No update required."
29   }
30
31 }
32
33 # End of script

二、国内花生壳的脚本,官方提供的脚本每次都会更新,根据上述changip脚本修改之,实现IP变化后才更新:

 1 local server "http://ddns.oray.com"
 2 local domain "xxxx.oicp.net"
 3 local users "user"
 4 local paswd "password"
 5 local adslinterface "changkuan"
 6 local ipaddr
 7 :global lastipaddr
 8
 9 set ipaddr [/ip address get [/ip address find interface=$adslinterface] address]
10 :if ([ :typeof $ipaddr ] = nil ) do={
11    :log info ("ORAY: No ip address present on " . $adslinterface . ", please check.")
12 } else={
13    set ipaddr [:pick $ipaddr 0 ([len $ipaddr] -3)]
14    :log info $ipaddr
15    :if ($ipaddr != $lastipaddr) do={
16     local par "/ph/update?&hostname=$domain&myip=$ipaddr"
17     :log info "ORAY: Sending UPDATE!"
18     :log info [:put [ /tool fetch url=($server . $par) mode=http user=$users password=$paswd ] ]
19     :global lastipaddr $ipaddr
20
21   } else={
22     :log info "ORAY: No update required."
23   }
24 }
时间: 2024-12-16 00:07:19

ROS的DDNS脚本的相关文章

OPENWRT 文本(shell) 配置支持oray的花生壳DDNS

opkg update opkg install ddns-scripts luci-app-ddns 用上面的命令下载ddns脚本,编辑配置文件 vi /etc/config/ddns 配置如下 config service "myddns" option enabled "1" option interface "wan" option use_syslog "0" option service_name "gi

Carla for Windows以及和虚拟机里ROS Bridge的交互

Carla是一个开源的自动驾驶测试框架,类似于Airsim.如果你搜索到了这篇文章,你应该已经大概知道carla是做什么的了. Carla有pre built binary,Linux和Windows平台的都有,也有官方的build tutorial,我自己尝试了下在Windows下的编译.结果第一步就出现了compiler error,因为懒所以我干脆用了他的官方二进制. https://github.com/carla-simulator/carla/releases 在0.9.5有Wind

零点计费系统支持RouterOS啦!(下面是对接教程)

零 点 计 费 系 统 对 接 ROS 教 程 1.首先我们到零点控制台:oa.eczcz.com先注册一个主账号:(当然,以前有维盟片区的主账号就不用再注册了,因为零点早就设计到支持多台路由器,所以,之前如果有主账号的用户就无需注册咯,直接添加新的片区来对接就可以了!) 2.使用我们刚注册好的主账号登录到控制台里面,点击片区管理,添加新的片区: 3.ROS这边必须打开API端口:8728 4.右键编辑刚刚添加的新片区,然后填写以下内容: 5.下载我们提供的脚本,解压,导入脚本,然后计划中添加2

用树莓派搭建外网可以访问的服务器

一.需要一个对外的公网IP 先查看路由器的对外IP 是否是公网IP,如果不是,可以致电宽带运营商,要求分配公网IP.对于普通用户,宽带运营商分配的公网IP是会变化的,每次启路由器,或者间隔一定时间,IP 都会变化一次.不过,这个问题可以解决.二. 将树莓派的IP 设置为静态IP 这里假设家里的所有上网设备都是通过路由器连接上网.路由器自身的IP是公网的IP,连接路由器的各个设备,分配的都是私有IP.如果树莓派的IP 不是静态的,那么每次重启路由器,路由器的IP 都是会变的,这样不利于实现接下来要

DD-WRT自定义脚本更新花生壳DDNS

N年以前买了一个tp-link 841n v7,一直用的还算可以吧,除了不定期重启路由器,不然网速慢的龟爬啊!这也是TP原厂固件的通病,于是刷了DD-WRT,话说DD确实很爽,除了功能强大之外,而且很稳定,现在我的路由器一直稳定运行基本没重启过. 既然刷了DD固件,就必须各种的设置,第一项就是DDNS,从网上查看各种文档,包括花生壳的官网论坛中的一个帖子,比如这篇官贴都没能解决我的问题,于是还是自己写脚本吧,在各种的尝试中,终于实现更新花生壳域名的脚本,在DD 管理->命令 中输入如下的脚本:

Linux架设DDNS服务器之自动更新脚本

问题描述:客户端是动态IP,每次连网之后要nsupdate下才可以把客户端的hostname 与IP映射更新到DNS Server上 命令如下: nsupdate -k K*****.key >server 192.*.*.* #dns server ip address >update delete yourfqdn A delete >update add yourFQDN 600 A your new IP 这样的效率实在是有点低,于是我就自己写个脚本来更新了.直接贴上我的脚本.脚

ROS脚本内调用脚本的一点问题

ROS计划任务的动作没有正确执行,测试了一下,发现一点问题.计划任务触发动作直接调用脚本(/sys sch .... on-event={script})或者在winbox内script界面调用脚本时,脚本内的/sys scr run script命令不被执行,此命令后的其它语句也不执行.计划任务触发动作为/sys scr run script(/sys sch .... on-event={/sys scr run script})或者在console执行命令:/sys scr run scr

python ros 使用launch文件启动脚本

目录结构 在包里面新建scripts文件夹,里面放运行的脚本文件,记得设置执行权限 然后新建launch文件夹,新建launch文件按照如下格式写: <node pkg="initialpos" name="initial_pos" type="initial_pos.py" output="screen"></node> 然后source 项目的setup.bash,就可以使用 roslaunch i

ROS踢出无线WIFI弱信号脚本

ROS踢出无线WIFI弱信号脚本/interface wireless registration-table :do {:foreach i in=[find] do={:local sin [get $i signal-strength]:set sin [:pick $sin ([:find $sin "-"]+1) 3]:put $sin:if ($sin >="75") do={remove $i}}} 原文地址:https://blog.51cto.