使用netcat获取我的公共IP

时间:2010-11-23 06:05:15

标签: ip public netcat

我在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

5 个答案:

答案 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'