通过php脚本重启路由器

该文章由 leevare 发布于 ,归类于 PHP

最近办公室的路由器,工作时间一长,就容易出现连不上的问题,总是需要去手动重启一下才能恢复正常。本来想在路由器中设置一下每天定时自动重启的,结果发现,压根没有这个功能。索性,写个脚本来实现这个目的。

首先你得登录进路由器吧,所以程序的核心就是模拟登录,这个完成了,基本目的就达到了。

路由器对账号和密码采用base64编码的方式,所以,最开始我是这样实现的。

$authorization = 'Authorization='."Basic ".base64_encode("admin:".$password);

把这个东西写入到请求文件头,就可以登录。

后来,我发现curl中本身就有这个几个属性,分别是CURLOPT_HTTPAUTHCURLOPT_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=重启路由器

这样,整个需求就实现了。

当然,到这里,还是要手动来运行该脚本。下篇文章将会介绍配置自动定时运行脚本,实现重启。

本文完~

如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!

相关文章:

说点什么

avatar
300
  Subscribe  
提醒