既然都可以從資料庫取得測試資料了
那位什麼不把測試結果丟回去呢?
所以就有了這一支
php
header("Content-Type:text/html; charset=utf-8");
$link = mysql_pconnect("資料庫", "帳號", "密碼") or die("無法與MySQL建立連線");
mysql_select_db("資料庫") or die("無法選擇std資料庫");
$fp=fopen( '/radtest/temp1.log',"w"); #把相關資訊都有各log紀錄
function radtest($un, $pw, $hn, $po, $sr){ #進行radtest測試
return exec('radtest '.trim($un).' ''.trim($pw).'' '.trim($hn).':'.trim($po).' 0 '.trim($sr).'|grep Accept|grep -c Accept');
}
function insertintodb($name, $status, $note){ #將log記錄新增至資料庫中
checkdb(strtolower($name));
$myquery1 = "insert into `wordpress`.`".strtolower($name)."`(status, time, note) values ('".$status."','".date('Y-m-d G:i:s')."','".$note."')";
$result1 = mysql_query($myquery1) or die("Insert 錯誤");
return $result1;
}
function checkdb($name){ #檢查要新增資料的資料表是否存在,若不存在則新增
$sql ='SHOW TABLES in wordpress WHERE Tables_in_wordpress = '' . $name . ''';
$rs = mysql_query($sql);
if(!mysql_fetch_array($rs)){
//echo "createdb ".$name."n";
createdb($name);
return FALSE;}
else
return TRUE;
}
function createdb($name){ #新增資料表
$myquery2 = "CREATE TABLE `wordpress`.`".$name."` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`status` int(5) NOT NULL,
`time` datetime NOT NULL,
`note` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
$result2 = mysql_query($myquery2) or die("Create ".$name." 錯誤");
}
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, shortname from 資料表";
$result = mysql_query($myquery) or die("查詢 Query 錯誤");
fwrite($fp, "下列單位進行radtest時發生錯誤!!n");
$count=0;
while($row = mysql_fetch_array($result))
{
//checkdb('LOG_'.$row["shortname"]);
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 ##########
insertintodb('LOG_'.$row["shortname"].'_'.$row["nasname"],'1','使用連線單位提供測試帳號密碼測試成功');
}
else
{
########## Test Fault #########
if( radtest( '預設帳號', '預設密碼', $row["nasname"], $row["port"], $row["secret"]) =='1')
{
insertintodb('LOG_'.$row["shortname"].'_'.$row["nasname"],'2','連線單位提供測試帳號密碼測試失敗,使用預設帳密測試成功');
}
else
{
insertintodb('LOG_'.$row["shortname"].'_'.$row["nasname"],'3','連線單位提供及預設測帳號密碼測試皆失敗');
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 ##########
insertintodb('LOG_'.$row["shortname"].'_'.$row["nasname"],'4','連線單位未提供測試帳號密碼,使用預設帳密測試成功');
}
else
{
########## Test Fault #########
insertintodb('LOG_'.$row["shortname"].'_'.$row["nasname"],'5','連線單位未提供測試帳號密碼,使用預設帳密測試失敗');
fwrite($fp, date('Y-m-d G:i:s').' : '.$row["schoolname"].' '.$row["nasname"]."失敗n");
$count++;
}
}
}
fwrite($fp, "共有".$count."間單位發生錯誤!!n");
fclose($fp);