You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用Agent的情况下通过Groovy代码删除UnetStack路由

不依赖自定义Agent通过Groovy代码实现UnetStack路由删除

UnetStack shell中能直接执行的路由删除操作,本质是调用内置Router服务的公开API,不需要编写、部署自定义Agent,直接在Groovy代码中获取Router服务引用调用对应方法即可实现完全一致的效果。

核心逻辑

所有路由操作都围绕内置的Router服务展开,Groovy代码运行在UnetStack的脚本执行上下文时,可以直接通过服务发现接口拿到Router实例,不需要额外封装Agent逻辑。

常用路由删除方法

拿到Router实例后,可根据需求调用对应删除接口:

  • 删除指定目标节点的所有路由:调用deleteRoutes(int targetAddress),传入目标节点地址,返回值为成功删除的路由条目数
  • 删除指定下一跳节点的所有路由:调用deleteRoutesToNextHop(int nextHopAddress),传入下一跳节点地址,返回值为成功删除的路由条目数
  • 清空节点全量路由表:调用flush()方法,无返回值,执行后路由表所有条目都会被清除

可直接复用的Groovy代码

// 导入路由服务常量
import org.arl.unet.Services

// 拉取Router服务实例,无需自定义Agent
def router = agentForService(Services.ROUTING)
if (!router) {
    println "路由服务未加载,无法执行删除操作"
    return
}

// 场景1:删除指向目标节点21的所有路由
def target = 21
def cnt1 = router.deleteRoutes(target)
println "已删除指向节点${target}的路由${cnt1}条"

// 场景2:删除所有下一跳为节点7的路由
def nextHop = 7
def cnt2 = router.deleteRoutesToNextHop(nextHop)
println "已删除下一跳为节点${nextHop}的路由${cnt2}条"

// 场景3:清空整张路由表(生产环境谨慎执行)
// router.flush()
// println "路由表已全部清空"

说明:上述代码的执行权限、生效效果和UnetStack shell中直接输入路由删除命令完全一致。如果节点运行了动态路由协议(如RPL、OLSR、AODV等),手动删除的路由会被协议按照网络拓扑自动重新学习生成。

内容的提问来源于stack exchange,提问作者satish vanapalli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:36:16