作为 Linux 新手,我尝试使用运行 debian 的 Dockstar 中的 wget 查询我的 DG834G 调制解调器的状态页面。不确定这是否有任何区别,但我通过 Windows 机器上的 SSH 连接到 Dockstar。想法是从调制解调器管理页面之一检索 WAN IP(请不要使用 DynDNS 答案),我制作了一个如下所示的 bash 脚本:
user@debian:/tmp# vi dg834g.sh
#!/bin/sh
# Retrieve Netgear DG834G WAN IP address.
wget --http-user='<my_account>' --http-password='<my_password>' -O s_status.htm http://192.168.0.1/s_status.htm
myIP=$(sed -En '/IP Address/{n;s/<[^>]*>|[[:space:]]*//gp;q;}' < s_status.htm)
echo "=== $myIP ==="
rm s_status.htm
wget -qO /dev/null --user='<my_account>' --password='<my_password>' http://192.168.0.1/logout.htm
wget -qO /dev/null --user='<my_account>' --password='<dummy_pwd>' http://192.168.0.1/logout.htm
如果我只是运行 bash 脚本,无论多少次,我都会得到以下内容:
user@debian:/tmp# ./dg834g.sh
--2011-09-26 14:23:10-- http://192.168.0.1/s_status.htm
Connecting to 192.168.0.1:80... connected.
HTTP request sent, awaiting response... 401 Unauthorized
**Unknown authentication scheme**.
**Authorization failed**.
0
rm: cannot remove `s_status.htm': No such file or directory
但是,如果我只从 Windows 机器连接到调制解调器的管理页面一次,从管理页面完全注销,然后运行 bash 脚本,我会得到:
user@debian:/tmp# ./dg834g.sh
--2011-09-26 14:28:46-- http://192.168.0.1/s_status.htm
Connecting to 192.168.0.1:80... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Connecting to 192.168.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/HTML]
Saving to: `s_status.htm'
[ <=> ] 5,033 --.-K/s in 0.02s
2011-09-26 15:28:47 (222 KB/s) - `s_status.htm' saved [5033]
=== 63.169.61.57 ===
user@debian:/tmp#
我不知道为什么我第一次收到“401 未授权”(等待用户和密码?)但至少我得到了我想要的东西,尽管方式不是令人满意的!
因为我想每隔几分钟自动检索一次 WAN IP,并在它发生变化时将其通过 FTP 传输到某个站点,所以我还没有完成任务的一半……
如果有帮助的话,Dockstar 会运行一个 Web 服务器,无论 Windows 机器是打开还是关闭(正常行为),都可以从 Web 访问该服务器。
有人能想到为什么我首先需要使用 Windows 框登录和注销才能让 bash 执行其应该执行的操作,以及如何纠正这种奇怪的行为?