与えられた文字列の代わりにIPを表示するためにechoデーモンに代わるものはありますか?
例:私のIP = 80.1.2.3
サーバーIP = 1.2.3.4
root@my-machine bash$ telnet 1.2.3.4
Trying 1.2.3.4...
Connected to 1.2.3.4.
Escape character is '^]'.
80.1.2.3
答え1
以下は、あなたが望むものを小さなPythonで実装したものです(実行server.py <port>
:
#!/usr/bin/env python
import socket
import sys
_, port = sys.argv
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("0.0.0.0", int(port)))
sock.listen(1)
while True:
conn, addr = sock.accept()
ip, port = addr
conn.send(ip.encode("ascii") + b"\n")
conn.close()
$ ./server.py 1234 &
[1] 20315
$ nc localhost 1234
127.0.0.1
$
答え2
そしてsocat
:
socat tcp-listen:12345,reuseaddr,fork system:'echo "$SOCAT_PEERADDR"'
答え3
要するに、いいえ。エコープロトコルについては後述する。RFC 862とてもシンプルで明確です。
TCPベースのエコサービス
エコサービスはTCPベースの接続アプリケーションとして定義されます。サーバーは TCP ポート 7 で TCP 接続をリッスンします。接続が確立されると、受信したすべてのデータが再送信されます。これは、呼び出し側のユーザーが接続を終了するまで続きます。
UDPベースのエコサービス
別のエコーサービスは、UDPベースのデータグラムアプリケーションとして定義されています。サーバーはUDPポート7でUDPデータグラムをリッスンします。データグラムが受信されると、その中のデータが応答データグラムに返送される。