家用路由器连接的时候无非是点一个按钮,而从http协议来说就是一个GET或者POST(多数就是GET),所以知道了原理来用Shell给192.168.1.1发送一个GET并不是很难的,用curl是很简单的。
但是需要知道的是GET的内容,所以还得借助Linux下的sniffer工具tcpdump,可惜我对TCP方面的东西不太感冒,tcpdump又是命令行的,所以我只好用Ethereal(Wireshark)代替了。反正只要能得到你点“连接”或者“断开”按钮时候包里GET的数据就行了。
具体使用方法可以看看Ref里的内容,我就不罗嗦了。
我用的Tp-link的路由器,当断开路由的时候GET的内容是(%B6%CF%20%CF%DF是“断 开”的ASCII码)
http://192.168.1.1/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1
在这里提醒一下,一开始我通过看http://192.168.1.1/userRpm/StatusRpm.htm页的源码,得到的GET的内容里面是“断开 ”而不是ASCII码的形式,可是通过Shell进行GET的时候怎么也不成功,后来才知道得用ASCII才行。
当然我就可以使用这样的命令来使路由器断开拉。
curl -u admin:admin "http://192.168.1.1/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1" > /dev/null
使用-u参数是因为curl访问这个页面的时候需要密码验证。
当然如果你想使用curl进行路由器的连接也是同理拉。
最后给出我的刷网站的脚本:
#!/bin/bash
# Renew IP, then wget the website, then again, so refresh the website!
for (( i = 0; i <= 100; i++ )) do curl -u admin:admin "http://192.168.1.1/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1" > /dev/null
curl -u admin:admin "http://192.168.1.1/userRpm/StatusRpm.htm?Connect=%C1%AC%20%BD%D3&wan=1" > /dev/null
wget http://www.xiaomao101.com -O index.tmp -o wget.log -b > /dev/null
ping -c 5 127.0.0.1 > /dev/null
done
#/sbin/shutdown now
Ref:
教您用命令行轻松玩转宽带路由器(上)(中)(下)
借助sniffer诊断Linux网络故障
没有评论:
发表评论