주어진 문자열 대신 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 데이터그램을 수신합니다. 데이터그램이 수신되면 그 안의 데이터가 응답 데이터그램으로 다시 전송됩니다.