57068368 发表于 2021-2-21 21:27:10

【求助】为什么更改IP地址,手动输入就OK,脚本就变成0.0.0.0

本帖最后由 57068368 于 2021-2-21 21:28 编辑

上面的代码就是通过大猫的云得到另一个地方的地址。
:log warning $gettestbl   从云上得到另一地方IP地址。显示地址正常。

:global oldgettestbl    从本机得到老的地址,
:log warning $oldgettestbl    显示老的地址,

:if ($gettestbl != $oldgettestbl) do= {/interface gre set gre-tunnel2 remote-address=$gettestbl   判断新地址与老地址是否一样,不一样进行更改地址,就这一步就出错了,一改地址,就变成了0.0.0.0,希望帮忙看看那里有问题。

:log warning "地址更换完成"
} else={
:log warning "地址一样不需要更换"}



自己在命令行上直接手动打interface gre set gre-tunnel2 remote-address=$gettestbl 这条命令就能直接更换成IP地址。放到脚本里面就成0.0.0.0

57068368 发表于 2021-2-21 21:33:21

:local mycvtoken "不能写的秘密"
:local result
:if ($result->"status" = "finished") do={
:global gettestbl ($result->"data")
:log warning $gettestbl}

:global oldgettestbl
:log warning $oldgettestbl

:if ($gettestbl != $oldgettestbl) do= {/interface gre set gre-tunnel2 remote-address=$gettestbl

:log warning "地址更换完成"}
else={
:log warning "地址一样不需要更换"}

cspm333 发表于 2021-2-22 00:44:48

:global oldgettestbl value-name=remote-address]

value-name=刪掉即可。

57068368 发表于 2021-2-22 20:10:53

cspm333 发表于 2021-2-22 00:44
:global oldgettestbl value-name=remote-address]

value-name= ...

设置地址时还是出错,主要是在这一句上,帮忙看看应该如何修改,谢谢。:if ($gettestbl != $oldgettestbl) do= {/interface gre set gre-tunnel2 remote-address=$gettestbl }判断新地址与老地址是否一样,不一样进行更改地址,就这一步就出错了,一改地址,就变成了0.0.0.0,希望帮忙看看那里有问题。

cspm333 发表于 2021-2-22 22:01:21

本帖最后由 cspm333 于 2021-2-22 22:05 编辑

57068368 發表於 2021-2-22 20:10
設置地址時還是出錯,主要是在這一句上,幫忙看看應該如何修改,謝謝。:if ($gettestbl != $oldgettest ...
您script開頭沒宣告gettestbl,腳本讀不到gettestbl變數值,空值時remote-address自然填0.0.0.0

:global gettestbl
:log warning $gettestbl

:global oldgettestbl

:if ($gettestbl!=$oldgettestbl) do={
/interface gre set "gre-tunnel2" remote-address=$gettestbl
:log warning "地址更換完成"
} else={
:log warning "地址一樣不需要更換"
}

47771885 发表于 2021-2-24 10:48:44

你这个不说其他的代码问题

首先你的 gettestbl ip没有进行转码判断

首先需要进行获取成功判断

成功后进行ip 类型判断

然后才进行修改动作

做好上面流程应该是没有问题的了

57068368 发表于 2021-3-2 20:43:38

经与大猫猫学习得知自己错在
:global oldgettestbl
这条上面了,没有在上面定义OLDGETTESTBL的类型,应先用:global oldgettestbl 进行定义,然后使用:set oldgettestbl 得到地址,然后后面进行更改就没有问题了。
页: [1]
查看完整版本: 【求助】为什么更改IP地址,手动输入就OK,脚本就变成0.0.0.0