最近办公室的路由器,工作时间一长,就容易出现连不上的问题,总是需要去手动重启一下才能恢复正常。本来想在路由器中设置一下每天定时自动重启的,结果发现,压根没有这个功能。索性,写个脚本来实现这个目的。
首先你得登录进路由器吧,所以程序的核心就是模拟登录,这个完成了,基本目的就达到了。
路由器对账号和密码采用base64编码的方式,所以,最开始我是这样实现的。$authorization = 'Authorization='."Basic ".base64_encode("admin:".$password);
把这个东西写入到请求文件头,就可以登录。
后来,我发现curl中本身就有这个几个属性,分别是CURLOPT_HTTPAUTH和CURLOPT_USERPWD,所以根本就不用去手动的完成base64编码,直接写在curl中就好了,简单明了。curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_USERPWD,"{$username}:{$password}");
这样,模拟登录的需求就实现了。
完整的实现代码如下:function router_login($url) {
global $username, $password;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_USERPWD,"{$username}:{$password}");
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$result = curl_exec($ch);
curl_close($ch);
if($result === FALSE) {
return false;
}
return $result;
}
接下来就是通过请求如下的url来重启路由了。$url = http://{$host}/userRpm/SysRebootRpm.htm?Reboot=重启路由器
这样,整个需求就实现了。
当然,到这里,还是要手动来运行该脚本。下篇文章将会介绍配置自动定时运行脚本,实现重启。
本文完~
如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!
打赏支持