代码之家  ›  专栏  ›  技术社区  ›  hornetbzz atiruz

使用netcat获取我的公共IP

  •  3
  • hornetbzz atiruz  · 技术社区  · 15 年前

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

    唯一可用的是一个基本的“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响应?

    太好了,非常感谢你们两位,因为我对数控一点都不舒服。

    以下是两种工作方式:

    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
    
    5 回复  |  直到 13 年前
        1
  •  3
  •   superfro    15 年前

    创建名为“script”的文件

    把这个放在目录里

    GET /automation/n09230945.asp HTTP/1.0
    Host: www.whatismyip.com
    

    确保底部有两个空换行符(此编辑器不会显示它们)

    那就跑吧

    cat script | nc www.whatismyip.com 80 | tail -1
    

    这是你的ip。。。你可以把它放在一个变量里,比如

    IP=`cat script | nc www.whatismyip.com 80 | tail -1`
    echo $IP
    

    这将只返回ip地址,不必大惊小怪

        2
  •  4
  •   fotinakis    11 年前

    既然whatismyip.com的自动化功能下降了,这里有一个替代方案:

    $ echo GET / | nc icanhazip.com 80
    

    …会输出你的IP。

        3
  •  2
  •   Community Mohan Dere    8 年前

    可以 使用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响应。

    即使您可以找到一个“what is my IP”web服务,它只以纯文本形式返回未经修饰的IP地址(使您不必解析HTML),您仍然需要解析HTTP响应头。

    您有哪些工具可以让您进行字符串解析?猛击?塞德?好吗?

    编辑:看起来像 superfro found a plain-text “什么是我的ip”服务,以及解析HTTP响应头的简单方法。

        4
  •  1
  •   dmanso    14 年前
    (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\}"
    
        5
  •  0
  •   Soenke    15 年前

    如果你在盒子上放了东西,你可以试试

    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'
    
    推荐文章