全ポートの状態一括表示

管理番号:YMHSW-3749

本設定例では、ルーターのL2MSマスター機能・Luaスクリプト機能と、L2スイッチのL2MSスレーブ機能を使用しています。

ルーターの対応機種は、RTX1220RTX1210RTX1200(Rev.10.01.16以降)、RTX830RTX810NVR700WNVR510NVR500FWX120です。

L2スイッチの対応機種は、 SWX2322PシリーズSWX2320シリーズSWX2310PシリーズSWX2310シリーズSWX2300シリーズSWX2210PシリーズSWX2210シリーズSWX2200シリーズSWX2110PシリーズSWX2110シリーズSWX2100シリーズです。

L2MSマスター(ルーター)とL2MSスレーブ(L2スイッチ)の対応リビジョンは、 技術資料「L2MS」でご確認ください。

図 構成図

スイッチのポート使用状況を確認する設定例です。
Luaスクリプトを使用して、スイッチのポートごとのリンクアップ/ダウン状態を取得し、ルーターのコンソールに出力します。
本設定例で使用するLuaスクリプトは、リンクの状態を表示した後に自動的に終了します。そのため、ポートの使用状況を確認するたびに実行する必要があります。
なお、Luaスクリプトを実行する際は、luaコマンドを使用します。Luaスクリプトファイル名に続けて、スイッチのMACアドレスまたはスイッチまでの接続ポートの経路情報を指定してください。

実行例:lua /swx_lua_status_ports.lua 00:a0:de:aa:bb:cc

対応機種のうち、設定例を掲載している機種は、以下のとおりです。

機種 掲載内容 備考
ルーター RTX1220 RTX1210 RTX1200 RTX830 RTX810 NVR700W NVR510 NVR500 FWX120 コマンド設定例
Luaスクリプト例
L2MSマスター機能、
Luaスクリプト機能
L2スイッチ SWX2210P SWX2210 SWX2200 SWX2110P SWX2110 SWX2100 L2MSスレーブ機能

ルーターの設定例

LANインターフェースの設定
(LAN1ポートを使用)
ip lan1 address 192.168.100.1/24
DHCPの設定 dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
L2MSの設定 switch control use lan1 on

Luaスクリプト例

スイッチの機種を取得する関数

function switch_model_read(sw)
  local rtn, str
  local cmd = "switch control function get model-name " .. sw
  rtn, str = rt.command(cmd)
  if (not rtn) or (not str) then
    str = string.format("failed to get model name : %s¥r¥n", sw)
  end
  return rtn, str
end

メインルーチン

local rtn, str, port_num, len
sw = arg[1]

-- Which model ?
rtn, str = switch_model_read(sw)
if (not rtn) or (not str) then
  if (str) then
    print(str)
  end
  return
end

if (string.find(str, "SWX2210P-10G", 1, true)) then
  port_num = 10
elseif (string.find(str, "SWX2210P-18G", 1, true)) then
  port_num = 18
elseif (string.find(str, "SWX2210P-28G", 1, true)) then
  port_num = 28
elseif (string.find(str, "SWX2210-8G", 1, true)) then
  port_num = 8
elseif (string.find(str, "SWX2210-16G", 1, true)) then
  port_num = 16
elseif (string.find(str, "SWX2210-24G", 1, true)) then
  port_num = 24
elseif (string.find(str, "SWX2200-8G", 1, true)) then
  port_num = 8
elseif (string.find(str, "SWX2200-24G", 1, true)) then
  port_num = 24
elseif (string.find(str, "SWX2200-8PoE", 1, true)) then
  port_num = 8
elseif (string.find(str, "SWX2110P-8G", 1, true)) then
  port_num = 8
elseif (string.find(str, "SWX2110-5G", 1, true)) then
  port_num = 5
elseif (string.find(str, "SWX2110-8G", 1, true)) then
  port_num = 8
elseif (string.find(str, "SWX2110-16G", 1, true)) then
  port_num = 16
elseif (string.find(str, "SWX2100-8G", 1, true)) then
  port_num = 8
elseif (string.find(str, "SWX2100-16G", 1, true)) then
  port_num = 16
elseif (string.find(str, "SWX2100-24G", 1, true)) then
  port_num = 24
elseif (string.find(str, "SWX2100-5PoE", 1, true)) then
  port_num = 5
elseif (string.find(str, "SWX2100-10PoE", 1, true)) then
  port_num = 10
else
  print(str)
  return
end

-- check the port status
for i = 1, port_num do
  local cmd = string.format("switch control function get status-port-speed "..
                   "%d %s", i, sw)
  rtn, str = rt.command(cmd)
  if (not rtn) or (not str) then
    return
  end
  len = string.len(str) - 2
  str = string.sub(str, 1, len)
  print("port " .. i .. " : " .. str)
end

【ご注意】
本設定例は、設定の参考例を示したもので、動作を保証するものではございません。
ご利用いただく際には、十分に評価・検証を実施してください。

メール

ご相談・お問い合わせ