![通过 CURL 上的终端将 HTML 请求发布到 RESTART ROUTER 失败](https://linux22.com/image/966571/%E9%80%9A%E8%BF%87%20CURL%20%E4%B8%8A%E7%9A%84%E7%BB%88%E7%AB%AF%E5%B0%86%20HTML%20%E8%AF%B7%E6%B1%82%E5%8F%91%E5%B8%83%E5%88%B0%20RESTART%20ROUTER%20%E5%A4%B1%E8%B4%A5.png)
我读过这页面如何使用重启路由器卷曲。
我收到了路由器的命令
http://192.168.1.1/Forms/tools_system_1?restoreFlag=0&Restart=RESTART
当我把它放在浏览器的地址栏中时,它可以工作,但是当我使用 curl
curl -u admin:mypass 'http://192.168.1.1/Forms/tools_system_1?restoreFlag=0&Restart=RESTART'
它不起作用。
终端屏幕上没有输出。
编辑
的结果 -
curl -i -u admin:mypass 'http://192.168.1.1/Forms/tools_system_1?restoreFlag=0&Restart=RESTART'
给出这个--
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="450TC1"
Content-Type: text/html
Transfer-Encoding: chunked
Server: RomPager/4.07 UPnP/1.0
EXT:
<html>
<head>
<title>Protected Object</title></head><body>
<h1>Protected Object</h1>This object on the RomPager server is protected
输出
curl --verbose -u admin:mypass 'http://192.168.1.1/Forms/tools_system_1?restoreFlag=0&Restart=RESTART'
给出这个--
* About to connect() to 192.168.1.1 port 80 (#0)
* Trying 192.168.1.1... connected
* Server auth using Basic with user 'admin'
> GET /Forms/tools_system_1?restoreFlag=0&Restart=RESTART HTTP/1.1
> Authorization: Basic YWRtaW46c2hhcmluZ2FuMDA3
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: 192.168.1.1
> Accept: */*
>
< HTTP/1.1 303 See Other
< Location: http://192.168.1.1/progress.htm
< Content-Length: 0
< Server: RomPager/4.07 UPnP/1.0
< EXT:
<
* Connection #0 to host 192.168.1.1 left intact
* Closing connection #0
但curl -u admin:mypass 192.168.1.1
返回了这一点。工作正常!
<html>
<head>
<title>
</title><meta http-equiv="Content-Type" content="text/html; charset=
iso-8859-1">
<meta http-equiv=Content-Script-Type content=text/javascript>
<meta http-equiv=Content-Style-Type content=text/css>
</head><frameset rows="65,75,*" framespacing="0" border="0" frameborder="0">
<frame name="header" noresize src="status.html" marginwidth="0" marginheight="0">
<frame name="navigation" noresize src="navigation-status.html" marginwidth="0" marginheight="0">
<frame name="main" noresize src="../status/status_deviceinfo.htm" marginwidth="0" marginheight="0">
</frameset><noframes>
</noframes>
</html>
答案1
坚持适合自己的方法。根据您之前的评论,您的密码中可能有一些特殊字符;请尝试将您的凭据括在引号中,例如-u "admin:pass"
。
如果 Wget 有效,请使用它;您可以使用-O -
开关将输出重定向到控制台(类似于 Curl 的默认行为),而不是保存文件。
以 POST 请求形式发送数据也可能有效,例如:
curl -u 'admin:mypass' --form 'restoreFlag=0&Restart=RESTART' 'http://192.168.1.1/Forms/tools_system_1'
还请注意,在您的输出中,路由器为 和 标志返回了不同的消息——和-i
。--verbose
我认为后者导致成功重启。我不认为标志与路由器的行为有关,它似乎是完全随机的。401 Unauthorized
-i
303 See Other
--verbose
无论如何,我不认为这个问题是针对 Ubuntu 的,我建议询问超级用户。
答案2
巧合的是,我正试图重新启动路由器,因此决定进行搜索,而不是重新发明轮子,所以我来到这里。
我发现了一些有趣的东西,只需运行这个,直接运行这个你的路由器就会重新启动
curl --verbose -u user:pass 'http://192.168.1.1/progress.htm'
或者
curl --verbose -u user:pass 'http://192.168.1.1/progress.htm' -e 'http://192.168.1.1/maintenance/tools_system.htm'
或者
wget -v -F -S --http-user=user --http-password=pass --ignore-length --referer="http://admin:[email protected]/maintenance/tools_system.htm" "http://192.168.1.1/progress.htm" -O "info.output.file"
您可以从 wget 命令中删除 -v 和 -S
有时 curl 会随机验证失败。