![TCP 연결 수신 후 명령 실행](https://linux55.com/image/155217/TCP%20%EC%97%B0%EA%B2%B0%20%EC%88%98%EC%8B%A0%20%ED%9B%84%20%EB%AA%85%EB%A0%B9%20%EC%8B%A4%ED%96%89.png)
bash
지정된 로컬 오픈 포트에 대한 원격 연결이 성공적으로 이루어졌을 때 명령을 실행하고 싶습니다 . 나는 조사했다인터넷 고양이그리고소캇, 하지만 내가 원하는 기능이 있는지 확실하지 않습니다. 통신 내용에는 관심이 없으며 연결이 설정되었다는 것만 중요합니다(시작 후 즉시 연결이 끊어질 수 있음).
그 이유는 내가 로컬 리소스(a)를 가지고 있기 때문입니다.내 세상서버), 요청이 있을 때만 시작하고 싶습니다. 이론적으로 클라이언트는 연결을 시도해야 하며(처음에는 물론 실패), 서버가 시작되고 몇 분 후에 클라이언트가 실행 중인 서버에 다시 연결할 수 있습니다.
답변1
-F
옵션이 있습니다 nc
:
-F
sendmsg(2)를 사용하여 첫 번째로 연결된 소켓을 stdout에 전달하고 종료합니다. 이는 -X와 함께 nc가 프록시에 대한 연결 설정을 수행한 다음 나머지 연결을 다른 프로그램(예: ssh_config(5) ProxyUseFdpass 옵션을 사용하는 ssh(1))에 두도록 하는 데 유용합니다.
나추측하다다음과 같이 사용할 수 있습니다.
nc -Fl 22222 | true && echo connection arrived
물론 에코하는 대신 서버를 시작합니다. 청취를 나타내는 22222
포트입니다 .l