본문 바로가기
Coding/PHP

[PHP] PHP로 Ping 모니터링 구현

by jamong1014 2022. 12. 2.
반응형

Ping으로 호스트를 조회해보고 패킷에 대한 손실이 1일 경우 Offline, 0일 경우 Online으로 표시해준다.

 

<?php


$iplist = array
(
	array("192.168.1.64","PI3"),
	array("192.168.1.125","PC_02"),
	array("192.168.0.1","PC_03")
	
);
$i = count($iplist);
$results = [];

for($j=0;$j<$i;$j++) {
	$ip = $iplist[$j][0];
	$ping = exec("ping -n 1 $ip",$output,$status);
	$results[] = $status;
	
}

echo "<table border='1' >
<th colspan='4'> ping monitoring </th>
<tr>
<td align='right' width='20'>#</td>
<td width='100'>IP</td>
<td width='100'>Status</td>
<td width='250'>Description</td>
</tr>";

foreach($results as $item =>$k) {
	echo '<tr>';
	echo '<td align="right">'.$item.'</td>';
	echo '<td>'.$iplist[$item][0].'</td>';
	if($results[$item]==0) {
		echo '<td style="color: green;">Online</td>';
	}
	else{
		echo '<td style="color: red;">Offline</td>';
	
	}
	echo '<td>'.$iplist[$item][1].'</td>';
	echo '</tr>';

}
echo "</table>";






?>

* $ping = exec("ping -n 1 $ip",$output,$status);  //ping -n 1 $ip(배열 선언된 아이피들을 ping으로 조회)

* for($j=0;$j<$i;$j++) {
$ip = $iplist[$j][0];
$ping = exec("ping -n 1 $ip",$output,$status);
$results[] = $status;
}  //반복문으로 돌리고 $results[] 0 또는 1 상태 값 선언

 

* foreach($results as $item =>$k) : 배열에 저장된 키, 원소 분리

* $results[$item] 가 0이면 Online, 1 즉 그 외라면 Offline 출력

 

추가로 끝에 

echo header("refresh: 5");

해서 새로고침 해도 되지만

<div id="ping">처럼div 정해서 jquery로 자체 갱신 해줘도 된다.

// <?php ?>

</div>

<script type="text/javascript">
setInterval(function() {
$("#ping").load(location.href+" #ping","");
}, 3000); 
</script>

 

 

반응형

댓글