[原创]linux下利用php自动重启路由器(tp-link:WR841N)

家里运行了一台pc机, 当做服务器用, 路由器是tp-link的wr841n, 平时挂着svn nginx samba mysql cacti transmission...等 因为网络还不错, 是对等网络, 上传下载都能达到270k, 所以一直挂着pt, 24*7的...
应该是路由器压力比较大, 经常跑死, 所以就想着定时启动下.

好了, 直接贴代码:

//路由器地址
$url = 'http://192.168.1.1';

//重启路由器的地址
$rurl = $url . '/userRpm/SysRebootRpm.htm?';

//用户密码
$username = '换成你的用户';
$password = '换成你的密码';

//重启时需要的参数, 其实Reboot等于什么都可以的
$get_fields = array(
    'Reboot' => '%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7',
);

//获取curl句柄 php需要开启curl扩展
$ch = curl_init($url);

//Basic认证
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$password); 

//不输出头部
curl_setopt($ch, CURLOPT_HEADER, 0); 

//curl_exec获取到的内容不直接输出, 而是返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

//2013-09-26更新: 伪造HTTP_REFERER, 解决新固件提醒You have no authority to access this device!的问题
curl_setopt($ch, CURLOPT_REFERER, 'http://192.168.1.1/userRpm/SysRebootRpm.htm');

//请求重启路由器的地址 传参 进行重启
curl_setopt($ch, CURLOPT_URL, $rurl.http_build_query($get_fields)); 

//释放资源
curl_exec($ch);
curl_close($ch);

保存到一个php文件, 放到定时, 比如明天早上1点:

crontab -e
1 1 * * * /usr/bin/php /data/shell/r.php

好, 大功告成, 其它路由器可做相关修改, 不过貌似我这个款路由器很多人用...

标签: php, tp-link, router, curl

添加新评论