사실 나도 비슷한 걸 만들고 싶어ifconfig.me기능이 있지만 내부 네트워크에만 해당됩니다. 서버에는 특정 포트를 수신하고 연결되는 원격 컴퓨터의 IP를 보내는 무언가가 있는 것 같습니다.
내 문제에 대한 좋은 유틸리티 인 것 같습니다 nc
(서버에 php/python/무엇이든 없습니다. 단지 쉘 및 표준 유닉스 도구만 있습니다).
원격 시스템에서 부팅해서 접속하면 원격 ip, dns 이름은 보이는데 nc -vv
, 원격 호스트로 보내는 방법을 못 찾겠습니다.
아니면 제가 너무 이상한 길을 선택해서 더 쉬운 해결책이 있는 걸까요?
답변1
다음과 같이 사용할 수 있습니다.
while true; do nc -lvp 1337 -c "echo -n 'Your IP is: '; grep connect my.ip | cut -d'[' -f 3 | cut -d']' -f 1" 2> my.ip; done
nc
1337
원격 호스트에 대한 정보를 파일로 리디렉션하는 stderr
verbose stderr
옵션 을 사용하여 포트에서 수신 대기하는 무한 루프에서 실행됩니다 my.ip
. 이 옵션을 사용하면 연결을 "처리"하기 위해 특정 작업을 수행할 -c
수 있습니다 . nc
이 경우 다음으로 my.ip
파일을 grep하여 IP 주소를 찾습니다.
pbm@lantea:~$ curl http://tauri:1337
Your IP is: 192.168.0.100
답변2
while true; do nc -l -v 3333 2> status | while read msg; do ip=$(cat status | grep -o -P '(?<=from).*(?=port)') && notify-send "$ip" "$msg" -i gtk-network; done ; done
리디렉션표준 에러명명된 사람에게상태; 그런 다음 파일에서 원격 커넥터의 IP를 읽고 마지막으로 inform-osd 메시지에 IP를 표시합니다.
노트:
누군가가 다른 컴퓨터에서 동일한 포트에 연결하는 경우CNC일반적으로 stderr: 에 넣습니다 connection from 10.10.0.1 port 3333 [tcp/*] accepted
. 나는 단지 다음을 사용하여 IP 주소를 추출합니다.grep.