通过ping判断交换机是否处于可控制的状态

在本设定的例子中,使用了路由器的L2MS控制器功能・Lua脚本功能和L2交换机的L2MS从属功能。

对应的路由器机型为:RTX1200 (Rev.10.01.66以后)、RTX820 (Rev.11.03.23以后)。

对应的L2交换机机型为:SWX2200-8G (Rev.1.00.07以后)、SWX2200-24G (Rev.1.00.07以后)。

L2MS控制器(路由器)和L2MS从属设备(L2交换机)的对应版本,请在技术资料[L2MS]中确认。

图 通过ping判断交换机是否处于可控制的状态 (1)

图 箭头

图 通过ping判断交换机是否处于可控制的状态 (2)

这是通过ping判断交换机是否处于可控制的状态的Lua脚本。
交换机本身不会直接对ping进行响应,由路由器代替交换机对路由器内部的交换机对应的IP地址的ping进行响应,如果路由器不能发现交换机则不响应这个ping。由此,可以保持外部的ping监控服务器的运转方式不变,确认LAN中的交换机是否正常运转。

在本设定例子中,执行ping的PC必须连接在路由器非连接交换机的接口上。

执行Lua脚本时,请使用Lua命令指定Lua脚本文件名。
停止脚本时,请执行terminate lua命令。

运行例:lua /swx_ping.lua

在对应的机型中,已刊登设定例的机型如下。

机型 刊登内容 备注
路由器 RTX1200 RTX820 命令行设置例
Lua脚本例
L2MS控制器功能、
Lua脚本功能
L2交换机 SWX2200-8G SWX2200-24G SWX2100-24G L2MS从属功能

路由器的设定例

可导出下列设定(Config)。

环境变量的设定 set SWX_PING_MAC1=(交换机(1)的MAC地址)
set SWX_PING_IP1=10.0.0.2
set SWX_PING_MAC2=(交换机(2)的MAC地址)
set SWX_PING_IP2=10.0.0.3
LAN接口的设定
(使用LAN1端口)
ip lan1 address 10.0.0.1/24
LAN接口的设定
(使用LAN2端口)
ip lan2 address 172.16.0.1/24
DHCP的设定 dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 10.0.0.10-10.0.0.191/24
L2MS的设定 switch control use lan1 on
设定值 -- 监控间隔
intvl = 10

-- 监控对象交换机数量(最大8)
swx_num = 2

-- set命令的字符
set_mac = "SWX_PING_MAC"
set_ip = "SWX_PING_IP"

-- Log的显示
log_level = "info"
log_pfx = "[LUA_SWX_PING] SWX "

-- 相关命令行字符串
cmd1 = "console character ascii"
cmd2 = "show status switch control"
cmd3 = "ip loopback"
cmd4 = " address "
mac_ptn = "%x%x:%x%x:%x%x:%x%x:%x%x:%x%x"
ip_ptn = "%d+%.%d+%.%d+%.%d+"
输出
SYSLOG
function swx_syslog(msg)
  rt.syslog(log_level, log_pfx .. msg)
end
IP地址的
初始登录处理
function init_swx_list()
  local t = {}
  local mac, ip
  local set_par

  for i = 1, swx_num do
    set_par = set_mac .. i
    mac = os.getenv(set_par)
    set_par = set_ip .. i
    ip = os.getenv(set_par)
    if mac and ip then
      table.insert(t, {mac = mac, ip = ip, stat = false})
    end
  end

  -- 无设定
  if #t < 1 then
    return false, "no set param."
  end

  -- 返回管理表
  return t
end
主程序 local swx_inf, rtn, str

-- IP地址的初始登录处理
swx_inf, str = init_swx_list()

-- 登录管理表失败
assert(swx_inf, str)

-- 交换机控制状态的定期监控
while true do
  -- 确认状态 --
  rt.command(cmd1)
  rtn, str = rt.command(cmd2)

  if rtn and str then
    for i, t in ipairs(swx_inf) do
      if str:match(t.mac) then
        if not t.stat then
          -- 为可识别状态时 --
          rt.command(cmd3 .. i .. cmd4 .. t.ip)
          t.stat = true
          swx_syslog("Found.")
          swx_syslog("Adds the IP " .. t.ip)
        end
      else
        if t.stat then
          -- 为不可识别状态时 --
          rt.command("no " .. cmd3 .. i .. cmd4)
          t.stat = false
          swx_syslog("Detect down...")
          swx_syslog("Deletes the IP " .. t.ip)
        end
      end
    end
  end

  -- 等待一定时间
  rt.sleep(intvl)
end

【注意】

本设定例只是用来参考,不保证正常运行。
请在使用的时候进行充分的评测和验证。

返回顶部Return to Top

网络相关产品

服务支持

事业绍介