Searching...
2011年6月3日 星期五

Radius 測試 - radtest.php (每小時執行一次)

因為既然都有資料庫了
那不如把資訊都放到資料庫中
這樣也比較方便
所以才用php寫了這一個測試
基本上也是使用radtest進行



header("Content-Type:text/html; charset=utf-8");
$link = mysql_pconnect("資料庫", "'帳號", "密碼") or die("無法與MySQL建立連線");
mysql_select_db("radius") or die("無法選擇std資料庫");

$fp=fopen( '/radtest/temp.log',"w");

function radtest($un, $pw, $hn, $po, $sr){ #進行radtest function
return exec('radtest '.trim($un).' ''.trim($pw).'' '.trim($hn).':'.trim($po).' 0 '.trim($sr).'|grep Accept|grep -c Accept');
}
mysql_query('SET NAMES utf8',$link);
mysql_query('SET CHARACTER_SET_CLIENT=utf8',$link);
mysql_query('SET CHARACTER_SET_RESULTS=utf8',$link);

$myquery = "select nasname, port, secret, schoolname, testaccounting, testpasswd from 資料表";
$result = mysql_query($myquery) or die("查詢 Query 錯誤");
fwrite($fp, "下列單位進行radtest時發生錯誤!!n");
$count=0;
while($row = mysql_fetch_array($result))
{
if(($row["testaccounting"]<>"預設帳號") and ($row["testaccounting"]<>"預設帳號")) # Have Testing username password
{
if( radtest($row["testaccounting"], $row["testpasswd"], '10.1.0.7', '1812', $row["secret"]) =='1')
{
########### Test Ok ##########
}
else
{
########## Test Fault #########
if( radtest( '預設帳號', '預設密碼', $row["nasname"], $row["port"], $row["secret"]) =='1')
{
}
else
{
#echo $row["schoolname"].' '.$row["nasname"]."失敗 (1,3)n";
fwrite($fp, date('Y-m-d G:i:s').' : '.$row["schoolname"].' '.$row["nasname"]."失敗n");
$count++;
}
}
}
else
{
if( radtest($row["testaccounting"], $row["testpasswd"], $row["nasname"], $row["port"], $row["secret"]) =='1')
{
########### Test Ok ##########
}
else
{
########## Test Fault #########
fwrite($fp, date('Y-m-d G:i:s').' : '.$row["schoolname"].' '.$row["nasname"]."失敗n");
$count++;
}
}
}
fwrite($fp, "共有".$count."間單位發生錯誤!!n");
fclose($fp);

exec('/bin/mail -s "radius error "'.$count.'" ('.date('Y-m-d G').':00) !!" cowman.niu@gmail.com < "/radtest/temp.log"');

if($count>20)
{
//跟廠商連線, 並送出簡訊
$login_wsdl = "http://tw.every8d.com/API20/Security.asmx?wsdl";
$sms_wsdl = "http://tw.every8d.com/API20/Message.asmx?wsdl";

$custID ="帳號"; //請勿更改
$userID="帳號"; //您的EVERY8D帳號
$password="密碼"; //您的EVERY8D密碼
$client = new SoapClient($login_wsdl);

// login
$params = array("custID"=>$custID,"userID"=>$userID,"password"=>$password,"APIType"=>"","version"=>"");
$objResult =$client->Login($params);
$xmlstr= $objResult->LoginResult;

$xml = new SimpleXMLElement($xmlstr);

if($xml->ERROR_CODE =="0000"){
//echo "Login successfully
";
//echo "正確與服務供應商取得連線
";
}else{
echo "與服務供應商連線錯誤
";
echo '返回';
exit;
}

// send sms
$UserNo = $xml->USER_NO; //從登入結果取得UserNo
$CompanyNo = $xml->COMPANY_NO; //從登入結果取得Company_No
$Credit = $xml->CREDIT; //從登入結果取得目前剩餘額度
$subject = "漫遊測試錯誤嚴重"; //發送主旨
$content = "請盡速檢查漫遊設定"; //發送內容
$mobile = "手機號碼"; //發送號碼
$email = "信箱"; //發送email位置
$sendTime= ""; //發送時間
$sms_xml = '';
$sms_xml .= '';
$sms_xml .= '';
$sms_xml .= '';

$sms_xml .= '
';

//Display Information
echo '傳送對象: '. $mobile. '
';
echo '訊息內容: '. $content. '
';
echo '發送人: COWMAN
';

//建立要傳送簡訊的陣列
$params_sms = array("custID"=>$custID,
"CompanyNo"=>$CompanyNo,
"userNo"=>$UserNo,
"sendtype"=>"110",
"msgCategory"=>"10",
"subject"=>$subject,
"content"=>$content,
"image"=>"",
"Audio"=>"",
"xml"=>$sms_xml,
"batchID"=>"",
"certified"=>"");

//檢查餘額, 小於100暫時停止發送
if($Credit<$Min_Credit){
echo "餘額不足, 暫時停止發送簡訊
";
echo '返回';
exit;
}

//建構SOAP訊息
$sms_Service = new SoapClient($sms_wsdl);

//送出簡訊, 並取得結果
$sendResult = $sms_Service->QueueIn($params_sms);
//從結果的結構擷取結果字串
$sendResultStr = $sendResult->QueueInResult;

if( substr($sendResultStr,0,1) =="-")
echo "訊息發送失敗
"; //表示訊息已經送出
else
echo "訊息傳送成功
";//表示訊息已經送出
}

0 意見:

張貼留言