HEX
Server: Apache/2.4.37 (CentOS Stream) OpenSSL/1.1.1k
System: Linux ysnet.com.tw 4.18.0-553.5.1.el8.x86_64 #1 SMP Tue May 21 05:46:01 UTC 2024 x86_64
User: test (521)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /var/www/net/api.php
<?php
include "routeros_api.php";
include "name.php";
$mikrotik_ip = $_GET['vpn'].'.sn.mynetname.net';//宣告變數mikrotik_ip,並已$_GET接收主頁傳來的已vpn為代號的主機資料
#$mikrotik_ip = 'b8d00a83a70b.sn.mynetname.net';  
$API = new RouterosAPI();//宣告變數API為登入主機的函數
if ($API->connect($mikrotik_ip, $mikrotik_username,$mikrotik_password)) {
	$idname = $API->comm("/system/identity/print");//連線成功,列出system中identity的資訊,主要取得社區編號並存放在陣列idname
	$chname = $API->comm("/system/note/print");//連線成功,列出system中note的資訊,主要取得社區的HEX碼並存放在陣列chname
	$startime = $API->comm("/system/resource/print");//連線成功,列出system中resource的資訊,主要取得主機運行時間並存放在陣列startime
	$secret = $API->comm("/ppp/secret/print");//連線成功,列出PPPOE使用者數量並存放在陣列secret
	$active = $API->comm("/ppp/active/print");//連線成功,列出PPPOE上線用戶數量並存放在陣列active
	$oldday = $startime['0']['uptime'];//宣告變數oldday,取得陣列中的uptime數值
	preg_match_all('!\d+!',$oldday,$newday);//透過preg_match_all函式,將oldday的uptime數值,已不同單位儲存為陣列保存在變數newday
	$newdate = "上線時間:".getDay($oldday,$newday);//宣告變數newdate為主機運作時常的天數,透過函式getDay將'w''d''h''m''s'轉變為'天'數
	$test = $API->comm("/interface/pppoe-client/monitor
	=.id=FTTH1
	=once
	");//連線成功,透過執行一次monitor指令,列出FTTH1的使用狀態存取為陣列test
	$oldtime = $test['0']['uptime'];//宣告變數oldtime,取得陣列中uptime的數值
	preg_match_all('!\d+!',$oldtime,$newtime);//透過preg_match_all函式,將oldtime的uptime數值,已不同單位儲存為陣列保存在變數newtime
	$newtimes = "外線運行:".getTime($oldtime,$newtime);//宣告變數newtimes為FTTH1連線時長,透過函式getDay將'w''d''h''m''s'轉變為'天'':'':'
	echo $idname['0']['name'].rawurldecode($chname['0']['note'])."<br>"."上線:".count($active)."戶&總數:".count($secret)."戶<br>".$newdate."<br>".$newtimes;
	//透過echo 顯示出idname陣列中的name,利用rawurldecode將hex數值轉變為中文顯示,利用函式count計算陣列active(上線用戶)及secret(總用戶)的總數並顯示出來,顯示newdate(主機運行天數),顯示newtimes(外線連線時長)
	}else{
			echo "社區主機斷線中,請盡快搶修";
	}
	$API->disconnect();
?>