Programming, tutorials, mechatronics, operating systems, and other tech stuff

TP-Link Access Point/router batch reboot/restarter php script [ID]

2 comments
For english version, click here.

Jika anda memiliki infrastruktur wireless network, yg terdiri dari banyak Access point dan Wi-Fi router. Dan pada suatu ketika, anda harus me-reboot semua access point. Akan sangat melelahkan jika anda harus login ke setiap AP/Router dan restart secara manual satu persatu.

Ngapain manual kalau kita bisa bikin kode buat nge-restart masal?

Untungnya, dalam kasus saya. semua access point mempunyai merek sama, yaitu TP-Link. Setelah beberapa riset dan experimen, akhirnya ketemu cara me-reboot access point dan router dengan merk itu melalui URL. Lalu saya tulis script PHP untuk membereskan semuanya.

Di infrastruktur saya, saya buat semua access point dan router mempunyai IP sub yg berbeda dari DHCP. Semua memiliki username dan password sama, semua memiliki metode otentikasi sama.Skrip ini menggunakan bahasa PHP, berjalan di terminal. Jadi mudah untuk diotomatiskan. Tinggal nambahin ke cron job. Jangan lupa di "chmod 777" dan jangan lupa php5-cli sudah terinstall.

Berikut adalah script yg bisa anda copy dan sesuaikan dengan kondisi masing-masing.

[code lang="php"]#!/usr/bin/php
<!--?php
//----------Auth config
$apUser="admin";
$apPass="admin";
//----------Lists of AP and it's IP address
$apList=Array(
Array("Ext1","192.168.0.15"),
Array("Ext2","192.168.0.17"),
Array("Jalak","192.168.0.2"),
Array("Barat","192.168.0.3"),
Array("-","192.168.0.5"),
Array("Parkit","192.168.0.6"),
Array("Murai","192.168.0.9"),
Array("Nuri","192.168.0.10"),
Array("Kenari","192.168.0.12"),
Array("Cucak","192.168.0.13"),
Array("Hud-Hud","192.168.0.14"),
);

function curl_download($ip){
$Url="http://".$ip."/userRpm/SysRebootRpm.htm?Reboot=Reboot";
// is cURL installed yet?
if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}

// OK cool - then let's create a new cURL resource handle
$ch = curl_init();

// Set URL to download
curl_setopt($ch, CURLOPT_REFERER, "http://".$ip."/userRpm/SysRebootRpm.htm");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Ubuntu; Linux i686;rv:12.0) Gecko/20100101 Firefox/12.0");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, $apUser.":".$apPass);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);

$output = curl_exec($ch);

curl_close($ch);

return $output;
}

print "n";
print "e[1;34mAP Resetter. By Cybermujahidze[0mn";
print "n";
print "List of AP:n";
foreach($apList as $ap){
print str_pad($ap[1],15,' ',STR_PAD_RIGHT)." ".str_pad($ap[0],10,' ',STR_PAD_RIGHT)." queuedn";
}
print "n";
print "Resetting ALL APn";
print "----------------n";
foreach($apList as $ap){
if(curl_download($ap[1])){
print str_pad($ap[1],15,' ',STR_PAD_RIGHT)." ".str_pad($ap[0],10,' ',STR_PAD_RIGHT)." [ e[1;32mAP Rebootede[0m ]n";
}else{
print str_pad($ap[1],15,' ',STR_PAD_RIGHT)." ".str_pad($ap[0],10,' ',STR_PAD_RIGHT)." [ e[1;31m AP Down e[0m ]n";
}
}
print "AP reset finished.n";
print "------------------n";
?-->
[/code]

2 comments :