在 Cacti 官網上有說到 這個 manager plugin 的用途為何及如何安裝這個 Plugin.
URL 如下
http://docs.cacti.net/userplugin:manage
這裡不再說明了,本 LAB 是用 plugin manage + TCP Port Template 這二個元件做出.
關於 TCP Port Template 安裝與請參閱.
http://forums.cacti.net/viewtopic.php?f=12&t=16477
本 LAB 的重點在於說明 manager 與 Line API 的介接,並發出 Alert Message.
在 Manage 裝好後,在 Cacti WEB UI \ Configuration \ Settings \ Manage
可以看見它提供了
Netsend Options 的功能,
簡單的說它可以透過 Enable "Net send" alerts 的觸發 Windows Net Send 機制,
所以我們可以將這個機制變更為與 Line API 的介接.
因為它是使用 Perl 程式語言.所以我們可以參考 Line 官網上
Push message (Perl) 的寫法,去改寫它即可.
https://devdocs.line.me/en/?perl#push-message
Push message API example
use LINE::Bot::API;
use LINE::Bot::API::Builder::SendMessage;
my $bot = LINE::Bot::API->new(
channel_secret => "<channel secret>",
channel_access_token => "<channel access token>",
);
my $messages = LINE::Bot::API::Builder::SendMessage->new(
)->add_text(
text => 'hello',
);
my $res = $bot->push_message("<to>", $messages->build);
unless ($res->is_success) {
# error handling
....
}
沒錯程式就是這樣..
==========
接下來我們再看一下原來的 netsend.pl 的 Source Code .
[root@bbb manage]# pwd
/var/www/html/cacti/plugins/manage
[root@bbb manage]#
[root@bbb manage]# cat
netsend.pl
use Net::NetSend qw(:all);
use Net::Nslookup;
my $target_netbios_name = $ARGV[0];
my $source_netbios_name = "CACTI";
my $target_ip = nslookup(host => $ARGV[0], type => "A");
my $message = $ARGV[1];
my $debug = 0;
my $success = sendMsg($target_netbios_name, $source_netbios_name, $target_ip, $message, $debug);
print ($success ? "Delivery successfull\n" : "Error in delivery! \n$@\n");
=========
可先使用 #
cp netsend.pl netsend.pl.bak 將原程式備份,再去改寫該程式.
Push Line message API example
#!/usr/local/bin/perl
use LINE::Bot::API;
use LINE::Bot::API::Builder::SendMessage;
$bot = LINE::Bot::API->new(
channel_secret => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
channel_access_token => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
);
$ToLineUid = "$ARGV[0]";
$messages = LINE::Bot::API::Builder::SendMessage->new;
$messages->add_text( text => " $ARGV[1] " );
$bot->push_message($ToLineUid, $messages->build);
======
沒錯程式就是這樣..
補充說明,那個 $ARGV[0] 是第一個參數 為 Line UID 的,
(原來的用法是指 Net Send 接收者)
可在 Cacti WEB UI \ Configuration \ Settings \ Manage \
Netsend Options \ Statuis that will receiv 'net send' alerts
的地方輸入.$ARGV[1] 是第二個參數,是原 Manage Alert Message.
所以程式的介接改寫就是這樣簡單.
WEB UI 設定畫面
Demo
其它參考資訊
使用 Perl 建立 Line API 運用環境
http://xrcd2.blogspot.tw/2016/12/perl-line-api.html
Line API 使用小筆記
http://www.vlab.com.tw/index.php/forum/21/15572-line-api