【问题标题】:Turn ON and OFF WIFI on my router using e.g. curl使用例如在我的路由器上打开和关闭 WIFI卷曲
【发布时间】:2022-01-08 17:01:56
【问题描述】:

问题

在夜间,我想关闭仅 WIFI 的 WLR-9500 路由器。我想使用我的 Synology NAS 中的 bash 脚本来完成此操作。不幸的是,我无法在我的路由器上安装 OpenWRT,也没有时间表可以在预定时间内打开和关闭 wifi。

到目前为止我做了什么

我一直在用 curl 命令摆弄很多东西,但还是无济于事。 我设法登录到路由器,并获取管理收音机开/关的页面,这个页面/框架(使用网络浏览器允许打开收音机)

这是页面框架的样子:

这实际上是这个页面的一个子框架:

来自路由器的页面框架 (html) 源代码如下所示:

<!DOCTYPE>
<html>
<head>
<script type="text/javascript" src="incjs.htm"></script>
<script type="text/javascript">
IncJs({init:INC_ADV_PAGE}); 
</script>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<script type="text/javascript">
    var sysOPMode=0;
    var enableRadio="";

function saveChanges()
{
    return true;
}

$(document).ready(function() {
    $.getJSON("/cgi-bin/wlan.cgi",{info:wlan_info.WEB_WLAN_BASIC,radio_idx:r_idx.R_24G},function (data){
    enableRadio = data.WLANINFO.basicINFO[0].radio_enable;
    if (data.WLANINFO.basicINFO[0].radio_enable==1)
    getById("radioEnable").checked=true;
    else
    getById("radioDisable").checked=true;
    });
})

</script>
</head>
<body style="background-image:none;background-color:transparent;">
<br><br>
<blockquote>
<p><script type="text/javascript">dw(showText(80))</script></p>
<form name="wirelessseting" method="post" action="submit.cgi">
<input type="hidden" name="submitpg" value="wlmain.html">
<br>
<table width="900px" border="0" cellspacing="2">
<tr>
<td style="font-weight:bold;"><script type="text/javascript">dw(showText(81))</script>&nbsp;:&nbsp;
<input type="radio" id="radioEnable" name="radioEnable" value="1" ><script type="text/javascript">dw(showText(76) + '&nbsp;')</script>
<input type="radio" id="radioDisable" name="radioEnable" value="0"><script type="text/javascript">dw(showText(88))</script>&nbsp;&nbsp;</td>
</tr>
</table>
<br>
<table  width="100%" cellspacing="1">
<tbody><tr><td>
<div align="right">
<script type="text/javascript">dw('<input type="submit" value="'+showText(46)+'" onClick="return saveChanges()"  width="105">')</script>
</script>
</div>
</td>
</tr></tbody>
</table>            
</form>
</blockquote>
</body>
</html>

我已经尝试了 curl 命令的许多变化,但没有成功。一旦我得到这个 curl 命令(或 curl 命令序列?)正确,我很确定我会设法创建我的 bash 脚本,我也会把它放在这里。

我使用下面的 curl 语句测试我是否可以访问该页面,并且成功完成。虽然没有生成 cjar 文件,所以我猜没有生成 cookie。

 curl --anyauth --cookie-jar cjar -u admin:xxxpassxxx -g http://192.168.178.1/wlmain.html

接下来我尝试像这样禁用收音机:

 curl --anyauth -u admin:xxxpassxxx --cookie-jar cjar -F "radioEnable=0" http://192.168.178.1/wlmain.html

(以及该命令行的许多变体)

问题

我怎样才能从命令行使用例如卷曲?

【问题讨论】:

  • 您可以使用wireshark检查启用wifi的请求。该请求很可能提交给submit.cgi,但尚不清楚radioEnable=1 是否是所需的全部参数。最好确定。
  • 啊好主意...让我们看看发生了什么:)
  • 或您喜欢的浏览器中的copy as curl 功能

标签: javascript html bash curl


【解决方案1】:

正如@konsolebox 建议的那样:解决方案是使用wireshark 找出页面实际发布的内容:

submitpg=wlmain.html&radioEnable=0

我在wireshark中使用的过滤器如下:

ip.addr eq 192.168.178.1 and ip.addr eq 192.168.178.100

发现了从我的桌面发布到http:\\192.168.178.1\submit.cgi 的内容,ap 地址为192.168.178.100

所以...整个 curl 命令必须看起来像这样,radioEnable 参数有 1 个参数,submitpg 有一个参数

 curl --anyauth -u admin:xxxPASSxxx -d "radioEnable=1&submitpg=wlmain.html" http://192.168.178.1/submit.cgi

在我的 Windows 桌面的命令行上对此进行了测试,它工作得很好。下一步也为我的接入点做同样的事情,但我很确定我可以从这里管理它。

一旦到位并开始工作,我也会将最终的 bash 脚本放在这里。

正如所承诺的那样,打开或关闭 WIFI 的脚本由我的 Synology NAS 的自动任务表调用。 sleep 是必需的,因为路由器在无线电模块重启期间“忙”并且不会接受任何其他命令。

RouterWifiOnOff

#turn off/on WIFI on AC2600/WLR9500 router

# 2.4GHz network
curl --anyauth -u admin:xxxPASSxxx -d "radioEnable=$1&submitpg=wlmain.html" http://192.168.178.1/submit.cgi

# allow the router to process this
sleep 15 

# 5.0 GHz Wifi network
curl --anyauth -u admin:xxxPASSxxx -d "radioEnable=$1&submitpg=wlmain2.html" http://192.168.178.1/submit.cgi

# set RE200/OpenWRT access point wifi UP or DOWN
if [ $1 -eq 0 ] 
then
  ssh root@192.168.178.2 'wifi down'
else 
  ssh root@192.168.178.2 'wifi up'
fi

提供给脚本的参数(01)决定是否启用/禁用 wifi。任务表中的调用如下所示:

 bash /volume1/homes/admin/WifiOnOffScripts/RouterWIFI_OnOff 0

我后来添加了说明如何为我的 OpenWRT 接入点打开/关闭 wifi 的声明。这涉及在您实际运行之前设置一个 RSA 密钥对(您不能为 SSH 提供密码),但这超出了主题范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    相关资源
    最近更新 更多