3

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 を許可している場合、www.obtainip.com などのサイトからパブリック IP 応答を取得するために netcat を使用できますか?

私は nc にまったく慣れていなかったので、お二人に感謝します。

2 つの作業方法は次のとおりです。

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
4

5 に答える 5

4

whatismyip.com の自動化が停止しているため、別の方法を次に示します。

$ echo GET / | nc icanhazip.com 80

...これにより、IPが出力されます。

于 2013-10-30T06:27:43.490 に答える
3

「スクリプト」というファイルを作成します

これを中身に入れて

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アドレスだけを返します。大騒ぎする必要はありません

于 2010-11-23T06:23:08.697 に答える
2

netcat使用して、動作する缶詰の HTTP リクエストを送信できます。

指図

cat httpreq.txt | nc www.whatismyip.com 80

httpreq.txt (少なくとも 2 行の空白行でファイルを終了してください)

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 アドレスのみをプレーン テキストで返す "what is my IP" Web サービスを見つけたとしても (HTML を解析する必要がなくなります)、HTTP 応答ヘッダーを解析する必要があります。

文字列の解析を可能にする機能はありますか? バッシュ?セド?おかしい?

編集:スーパーフロがプレーンテキストの「私の IP とは何か」サービスと、HTTP 応答ヘッダーを解析する簡単な方法を見つけたようです。

于 2010-11-23T06:16:10.593 に答える
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\}"
于 2012-03-21T17:09:19.553 に答える
0

ボックスに 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'
于 2010-11-23T11:27:30.163 に答える