我最近在幫我朋友在 [某知名企業] 建置網管系統,並結合手機簡訊發報功能
使用軟體為 cacti + zabbix ( open source )
使用軟體為 cacti + zabbix ( open source )
功能差不多是這樣,只是上面這些圖是以 syslog 為出發點的架構
網管角度與方式是最大的差異吧.
~ 網管系統不就是這樣.大同小異...哈
而這家 [某知名企業] 是用 Cacti + snmp + ping + Zabbix agent 加以監控的.
架構上是差不多的,功能上也是相似的.就是網管例行功能與需求.
Cacti & Zabbix採主動出擊的網管方式!而 Syslog 則是被動通知.
運作邏輯簡要說明如下:
Device ---------------------->syslog---->網管系統----->異常通知
Device <---SNMP/Zabbix-Agent/ICMP<-------網管系統----->異常通知
外面買這樣 Solution 至少以萬起跳吧!
我大約花了一個多星期才完成這個專案.
作業方式就是就在家做好了所有Plugins及API加Scripts.
再透過Teamview去完成相關的設定工作與相關測試與調校作業.
其中手機簡訊API的界接是將 XSMS_API 改寫入msn2web 程式(Pank msn2web程式 Source http://pank.org/msn/web2msn.tgz)
成為 web API 介面,改寫 msn2web 上半段 php 程式 (該企業的需求僅需手機簡訊)
類似這樣的畫面.
架構上是差不多的,功能上也是相似的.就是網管例行功能與需求.
Cacti & Zabbix採主動出擊的網管方式!而 Syslog 則是被動通知.
運作邏輯簡要說明如下:
Device ---------------------->syslog---->網管系統----->異常通知
Device <---SNMP/Zabbix-Agent/ICMP<-------網管系統----->異常通知
外面買這樣 Solution 至少以萬起跳吧!
我大約花了一個多星期才完成這個專案.
作業方式就是就在家做好了所有Plugins及API加Scripts.
再透過Teamview去完成相關的設定工作與相關測試與調校作業.
其中手機簡訊API的界接是將 XSMS_API 改寫入msn2web 程式(Pank msn2web程式 Source http://pank.org/msn/web2msn.tgz)
成為 web API 介面,改寫 msn2web 上半段 php 程式 (該企業的需求僅需手機簡訊)
類似這樣的畫面.
亞太電信企業簡訊XSMS服務平台程式開發指引手冊(Release Version 1.9)
XSMS_API_V1.9.pdf
5.1. 即時簡訊發送API
5.1.1. SOAP 介面說明
此功能提供給企業用戶透過SOAP API 傳送即時簡訊發送之需求。
5.1.1.1. 介面協議
SOAP
HTTP Method: Post
5.1.1.2. 介面URL
未加密:
http://xsms.aptg.com.tw/XSMSAP/api/APIRTRequest
加密:
https://xsms.aptg.com.tw/XSMSAP/api/APIRTRequest
6.3. PHP 範例 + 介面協議說明
$url= "xsms.aptg.com.tw";
$fp = fsockopen($url,80,$errno,$errstr,30);
if (!$fp){
echo 'Could not open connection.';
}
else{
$xmlpacket ='<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header/>
<soap-env:Body>
<Request>
//企業代表號
<MDN>xxxxxxxxxx</MDN>
//使用者帳號(企業管理者之帳號即為企業代表號)
<UID>xxxxx</UID>
//使用者密碼
<UPASS>xxxxxxx</UPASS>
//簡訊主旨
<Subject>API test</Subject>
//Retry 是否啟用
<Retry>Y</Retry>
//長簡訊是否啟用
<AutoSplit>N</AutoSplit>
//簡訊發送截止時間
//Default 為發送時間+24 小時格式為YYYYMMDDhhmm年 月 日 時分截止時間最晚為發送時間+24 小時,若使用者設定超過24 小時,將以24 小時為限,不再回覆任何訊息
//<StopDateTime>N</StopDateTime>
//簡訊本文
<Message>SMS API Test OK</Message>
<MDNList>
//接收端手機號碼
<MSISDN>xxxxxxxxxx</MSISDN>
</MDNList>
</Request>
</soap-env:Body>
</soap-env:Envelope>';
$contentlength = strlen($xmlpacket);
$out = "POST /XSMSAP/api/APIRTRequest HTTP/1.1\r\n";
$out .= "Host: 210.200.64.111\r\n";
$out .= "Connection: close\r\n";
$out .= "Content-type: text/xml;charset=utf-8\r\n";
$out .= "Content-length: $contentlength\r\n\r\n";
$out .= "$xmlpacket";
fwrite($fp, $out);
while (!feof($fp)) {
$theOutput .= fgets($fp, 128);
}
fclose($fp);
echo $theOutput;
}
?> 下方程式請依個自需求.自行改寫之...僅供參考使用...新的web2sms取代web2msn
===================================
<?php
function counter() {
$file="counter.txt";
if (!file_exists($file)) {
$fp=fopen($file, "w");
fputs($fp, 0, 2);
fclose($fp);
}
$conts=file("$file");
$counter=$conts[0]+1;
$fp=fopen($file, "w");
fputs($fp, $counter,
echo $counter;
}
function SMS_API(){
/* 填入API 指令的網址 */
$fp = fsockopen("xsms.aptg.com.tw", 80, $errno, $errstr, 30);
if (!$fp)
{
echo 'Could not open connection.';
}
else
{
$xmlpacket ='<soap-env:Envelope xmlns:soap-env='http://schemas.xmlsoap.org/soap/envelope/'>
<soap-env:Header/>
<soap-env:Body>
<Request>
<MDN>0982684444</MDN>
<UID>dennischung</UID>
<UPASS>aptgxsms</UPASS>
<Subject>亞太電信簡訊發送平台</Subject>
<Retry>Y</Retry>
<AutoSplit>N</AutoSplit>
<StopDateTime>201006021230</StopDateTime>
<Message>這是一封來自亞太電信....</Message> 重點在這裡=====> 想辦法將web2msn的msg所接收的訊息寫在這個地方,並成為SOAP的標準格式內容等(重點)
<MDNList>
<MSISDN>0982111111</MSISDN>重點在這裡=====> 想辦法將web2msn的msn所接收的訊息寫在這個地方,並成為SOAP的標準格式內容等(重點)
<MSISDN>0982111222</MSISDN>
<MSISDN>0982111333</MSISDN>
</MDNList>
</Request>
</soap-env:Body>
</soap-env:Envelope>';
$contentlength = strlen($xmlpacket);
$out = "POST /XSMSAP/api/APIRTRequest HTTP/1.1\r\n";
$out .= "Host: 210.200.64.111\r\n";
$out .= "Connection: close\r\n";
$out .= "Content-type: text/xml;charset=utf-8\r\n";
$out .= "Content-length: $contentlength\r\n\r\n";
$out .= "$xmlpacket";
fwrite($fp, $out);
while (!feof($fp))
{
$theOutput .= fgets($fp, 128);
}
fclose($fp);
echo $theOutput; // $theOutput is the response returned from the remote script
}
?>
if ($msn) {
$c = $msn;
$g = $msg;
$msn=trim($msn);
$id=strlen($msg);
if (strstr($msn, '0') ) {
if ($charset=='big5') $msg=iconv('big5','utf-8',$msg);
SMS_API(); ---->這裡指的是將網頁中的 MSN-ID & MS-MSG 餵入 function SMS_API() [亞太的XSMS SOAP API 變成 SMS-ID & SMS-MSG] 並執行手機簡訊傳送! 條件是一定是要輸入 ID & MSG 才會進行手機簡訊傳送動作!
================== 這裡的邏輯是這樣子的
MSN-ID --------> SMS-ID
MSN-MSG------> SMS-MSG 變成新的 sms.index.php
================== 原來舊的 msn.index.php
msn --------> MSN-ID
msg------> MSN-MSG
====================== 整個流程就是
msn--->msn-id------->sms-id
msg--->msg-msg---->sms-msg
======================
if ($cli) exit;
echo ( "<P>SOAP API Message:" . $theOutput . ".</P>" );
// echo "<script>alert('Sending SMS');</script>";
} else {
echo "<script>alert('SMS 手機門號輸入不正確!');</script>";
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>WEB2MSN</title>
</head>
<body onload="form1.msn.focus()">
<h3>WEB2MSN</h3> 需要加入我的 MSN bot 才能送訊息給您, 請新增 MSN 連絡人:
<font color=blue><a href=msnim:add?contact=msn@pank.org><b>msn@pank.org</b></a></font><br> 測試完後再把他刪除即可, 非常感謝!<br>
<form name=form1 method=post>
<table border=0>
<tr>
<td>傳送給 MSN</td>
<td><input name=msn size=70 title='傳給多個連絡人請用 , 隔開'></td>
</tr>
<tr>
<td>訊息</td>
<td>
<textarea rows=5 name=msg cols=50 title='請輸入訊息'>
</textarea><br>
</td>
</tr>
<tr>
<td> </td>
<td><input type=submit value="傳送"></td>
</tr>
</table>
</form>
<br> 配合時間排程(crontab), 可以做到行事曆提醒功能<br>
CLI 傳訊方法<br>
wget -qO- "http://pank.org/msn/?cli=1&msn=MSN帳號&msg=訊息"<br>
若您的系統是用 big5 編碼, 請加 charset 參數, 例如:<br>
wget -qO- "http://pank.org/msn/?cli=1&charset=big5&msn=MSN帳號&msg=訊息"<br>
<br> 感謝 twu2 所分享的文章:
<a href=http://blog.teatime.com.tw/1/post/200>使用 PHP 發送 MSN 訊息</a> |
<a href=http://blog.teatime.com.tw/1/post/218>msn.class.php v1.3a, a simple msnbot</a>
<hr>
<table border=0 width=100%>
<tr>
<td><a href=http://pank.org>pank.org</a></td>
<td align=right><font color=405060><? counter(); ?> Visitors</font></td>
</tr>
</table>
<p> </p>
</body>
</html>
===================================
Cacti程式內容的修改請參考
Cacti plugin thold (Threshold Alert Module) + MSN http://www.vlab.com.tw/vlabforums/viewtopic.php?t=15262
Threshold Alert Module 的程式內容會因版本不同.
所以程式有會有所不同.請特別注意!!
vi /var/www/html/cacti/plugins/thold/thold_functions.php
search [if (trim($alert_emails) != '') {] 在thold_mail(....的下方新增 以 wget 的方式.將 alert_emails 的 subjcet message 導入 sms2web 的 MSN-Message (重點)
alert
if (trim($alert_emails) != '') {
wget ......請參改如下的Wget CLI
warning
if (trim($warning_emails) != '') {
wget ......
==========================
Wget CLI 傳訊方法 :
wget -qO- "http://pank.org/msn/?cli=1&msn=MSN帳號&msg=訊息"
若您的系統是用 big5 編碼, 請加 charset 參數, 例如:
wget -qO- "http://pank.org/msn/?cli=1&charset=big5&msn=MSN帳號&msg=訊息"
===========================
================
XRCD2
==============
License Certified:
Juniper JNCIA-ER JNCIA-EX JNCIS-ES JNCIS-ER JNCIS-M
XRCD2
==============
License Certified:
Juniper JNCIA-ER JNCIA-EX JNCIS-ES JNCIS-ER JNCIS-M
沒有留言:
張貼留言