我在IP摄像头(Busybox)上运行了一个非常基本的Linux服务器。我想获得位于路由器后面的那台摄像机的公共IP。 它没有“wget”也没有“traceroute”,而“ping”只是回答“活着”或“不活着”......
唯一可用的是基本的“netcat”:
nc
BusyBox v1.1.3 (2009.12.07-16:16+0000) multi-call binary
Usage: nc [OPTIONS] [IP] [port]
Netcat opens a pipe to IP:port
Options:
-l listen mode, for inbound connects
-p PORT local port number
-i SECS delay interval for lines sent
-w SECS timeout for connects and final net reads
-4 Use IPv4 (default)
-6 Use IPv6
-D DSCP set IP DSCP field
-P PRIO set VLAN user-priority
如果我的ISP允许传出HTTP,是否可以使用netcat从www.obtainip.com或类似网站获取公共IP响应?
非常感谢你们两位,因为我对nc感到不舒服。
以下是两种工作方式:
echo "GET /automation/n09230945.asp HTTP/1.0" > http_req2.txt
echo "Host: www.whatismyip.com" >> http_req2.txt
echo "" >> http_req2.txt
echo "" >> http_req2.txt
IP2=$(cat http_req2.txt | nc www.whatismyip.com 80 | tail -n 1)
echo $IP2
YEAH !
更奇怪,但......它也有效:
echo "GET / HTTP/1.0" > http_request.txt
echo "Host: www.whatismyip.com" >> http_request.txt
echo "User-Agent: netcat" >> http_request.txt
echo "Referer: http://www.whatismyip.com/" >> http_request.txt
echo "" >> http_request.txt
echo "" >> http_request.txt
IP=$(cat http_request.txt | nc www.whatismyipaddress.com 80 | tail -n 1)
echo $IP
YEAH again!
EDIT 当然,这可以像建议的那样更好地编写脚本:
echo -e "GET /automation/n09230945.asp HTTP/1.0\n"Host: www.whatismyip.com\n\n" | nc www.whatismyipaddress.com 80 | tail -n 1
答案 0 :(得分:4)
由于whatismyip.com的自动化程度下降,这里有另一种选择:
$ echo GET / | nc icanhazip.com 80
...将输出您的IP。
答案 1 :(得分:3)
创建一个名为'script'的文件
将其放入内容
GET /automation/n09230945.asp HTTP/1.0
Host: www.whatismyip.com
确保底部有2个空行换行(此编辑器不会显示它们)
然后运行
cat script | nc www.whatismyip.com 80 | tail -1
你的ip ...你可以把它放在像
这样的变量中IP=`cat script | nc www.whatismyip.com 80 | tail -1`
echo $IP
这将只返回ip地址,没有大惊小怪
答案 2 :(得分:2)
您可以使用netcat发送有效的预设HTTP请求:
<强>命令强>
cat httpreq.txt | nc www.whatismyip.com 80
httpreq.txt (确保以至少两个空行结束文件)
GET / HTTP/1.0
Host: www.whatismyip.com
User-Agent: netcat
Referer: http://www.whatismyip.com/
<<don't forget your blank lines above here>>
... 但您仍需要一些机制来解析HTTP响应。
即使你能找到一个“我的IP是什么”的web服务,它只返回纯文本的朴素IP地址(让你不必解析HTML),你仍然需要解析HTTP响应头。 / p>
你有什么设施可以让你做一些字符串解析? BASH? SED? AWK?
编辑:看起来像superfro found a plain-text“什么是我的ip”服务,以及解析HTTP响应标头的简单方法。
答案 3 :(得分:1)
(echo GET /; echo) |nc www.whatismyipaddress.com 80 | grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
答案 4 :(得分:0)
如果您已装箱,可以尝试
echo -e "GET /automation/n09230945.asp HTTP/1.1\r\nHost: www.whatismyip.com\r\n" | nc -w1 www.whatismyip.com 80 | sed -ne '$p'