NATテーブルを監視してDiscordに通知する
from YAMAHA RTX830
NATテーブルを監視してDiscordに通知する
NATディスクリプターを監視する
Luaでメールで送る例がある
Discordに直接送れないか?
ヤマハルーター専用 API
postリクエスト送れるわ
YAMAHAのコード例でメインルーチン部分を以下に書き換える
code:lua
------------------ 送信先設定(Discord Webhook URL) ------------------
discord_webhook_url = "https://discord.com/api/webhooks/WEBHOOK_ID/WEBHOOK_TOKEN" -- ★
------------------------------------------------------------
-- メインルーチン --
------------------------------------------------------------
local rtn, nat_use, str
local title = "NAT マスカレードテーブル "
local unit = " セッション"
while (true) do
-- メッセージの初期化
local message_text = ""
rtn, nat_use, str = natmsq_use_status(nat_descriptor)
if (rtn) then
if (nat_use) and (str) then
if (nat_use > th_port) then
message_text = message_text .. title .. "が閾値を超えています。\r\n"
message_text = message_text .. string.format(" %s: %d%s\r\n 閾値: %d%s\r\n\r\n",
title, nat_use, unit, th_port, unit) .. nattbl_info_type2(str, ip_num)
end
end
else
message_text = str
end
if (message_text:len() > 0) then
-- Discord Webhook用のPOSTデータをJSON形式で作成
-- ※内部ではShift-JISが使われるため、必要に応じて文字コード変換してください
local post_body = string.format('{"content": "%s"}', message_text)
-- HTTPリクエストテーブルの作成
local req_tbl = {
url = discord_webhook_url,
method = "POST",
content_type = "application/json",
post_text = post_body
}
-- HTTPリクエスト送信
local rsp = rt.httprequest(req_tbl)
if (not rsp.rtn1) then
rt.syslog(log_level, "failed to send Discord webhook message. (Luaスクリプトファイル名)")
end
end
rt.sleep(idle_time)
end
RTX810 ヤマハルータで Lua スクリプトを始めてみた。 | 僕とガジェット
$ make directory /lua
$ show file list /lua
$ show file list /
$ show file list lua
みたいな感じでみえる
起動時にdiscord.luaを走らせる
5分おきにNATディスクリプターを監視して超過してたらDiscordに通知する
code:config
schedule at 1 startup * lua lua/discord.lua