使用netcat获取我的公共IP

使用netcat获取我的公共IP,ip,public,netcat,Ip,Public,Netcat,我有一个运行在IP摄像头(Busybox)上的非常基本的Linux服务器。我想获取那个摄像头的公共IP,它位于路由器后面。 它没有“wget”或“traceroute”,而“ping”只是回答“活着”或“不活着” 唯一可用的是基本的“netcat”: 如果我的ISP允许传出HTTP,是否可以使用netcat从www.obtainip.com或类似网站获取公共IP响应 非常感谢你们两位,因为我对nc一点也不舒服 以下是两种工作方式: echo "GET /automation/n09230945.

我有一个运行在IP摄像头(Busybox)上的非常基本的Linux服务器。我想获取那个摄像头的公共IP,它位于路由器后面。 它没有“wget”或“traceroute”,而“ping”只是回答“活着”或“不活着”

唯一可用的是基本的“netcat”:

如果我的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!
编辑 当然,可以更好地编写脚本,如建议的:

echo -e "GET /automation/n09230945.asp HTTP/1.0\n"Host: www.whatismyip.com\n\n" | nc www.whatismyipaddress.com 80 | tail -n 1

可以使用netcat发送一个有效的、固定的HTTP请求:

命令

cat httpreq.txt | nc www.whatismyip.com 80
httpreq.txt(确保文件结尾至少有两行空白)

GET/HTTP/1.0
主持人:www.whatismyip.com
用户代理:netcat
推荐人:http://www.whatismyip.com/

创建一个名为“脚本”的文件

把这个放进目录里

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地址,无需担心

如果您已在机顶盒上使用了sed,您可以尝试

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'

由于whatismyip.com的自动化程度下降,这里有一个替代方案:

$ echo GET / | nc icanhazip.com 80

…这将输出您的IP。

嗯,我不能安装wget或curl,否则我会喜欢这样做。是的,我有tail、sed和grep可用,但没有awk。我还可以使用telnet编写bash脚本。令人惊讶的是,我直接使用它得到了一个错误500,但我得到了公共IP,将带有nc的httpreq.text保存到www.whatismyipaddress.com,就像这样:cat http_request.txt get/http/1.0 Host:www.whatismyip.com用户代理:netcat Referer:IP=$(cat http_request.txt | nc www.whatismyipaddress.com 80 | tail-n 1)看看Superpro的解决方案。因为你有尾巴。:-)我想我还是保留你的吧,因为它看起来更通用,我担心这个“GET/automation/n09230945.asp”会在几天内消失。@hornetbzz-我不认为有任何理由害怕
/automation/n09230945.asp
URL。它在该网站的论坛上被多次提及,作为检索您的IP地址的替代方法。使用它将使解析IP地址更加容易。但是,用你喜欢的东西,用对你有用的东西!thx,事实上,我将在shell中编写这两个脚本,然后我将两次确保获得此IP,并且稍后避免疑惑为什么我没有获得它;-)许多Thx,实际上你们两个都非常有效和友好地帮助了我。IP=$(echo-e“GET/automation/n09230945.asp HTTP/1.1\r\nHost:www.whatismyip.com\r\n“| nc-w1 www.whatismyip.com 80 | tail-1)这对我不起作用。我用适当的内容创建了
脚本
文件(包括底部的两行空行)。但是
cat脚本| nc www.whatismyip.com 80 | tail-1
不打印任何内容。如果我将其简化为
cat script | nc www.whatismyip.com 80
,它仍然不打印任何内容。whatismyip的自动化已停止,请改用它:
nc icanhazip.com 80
,然后
GET/
。酷。这可能是一行
echo GET/|nc icanhazip.com 80
更新为仅使用curl。问题是如何使用netcat而不是curl获取外部IP。哈哈,这就是我在两年后不阅读问题就更新答案的结果。更新为使用您的简化版本@avalanchy
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'
(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\}"
$ echo GET / | nc icanhazip.com 80