netcat을 사용하여 프로그램을 시작하시겠습니까? [복사]

netcat을 사용하여 프로그램을 시작하시겠습니까? [복사]

netcat이 PC1(IP: 10.0.0.1)의 특정 포트를 수신하도록 한다고 가정해 보겠습니다.

PC1:~$ nc -l 9999

PC2(IP:10.0.0.2)에서 연결하고 일부 문자열을 보냅니다.

PC2:~$ nc 10.0.0.1 9999
    hello
    touchit
    test
    what's up
    touchit
    bye

PC2에서 "touchit"을 보낼 때마다 "touch test.txt" 명령이 PC1에서 실행되도록 PC1의 첫 번째 명령을 어떻게 수정합니까?

표준 명령과 파이프를 영리하게 조합하여 이를 수행하는 것이 좋을 것입니다. 물론 "touch test.txt"는 어떤 명령으로도 대체될 수 있습니다. PC2에서 보낸 다른 명령 문자열을 사용하여 다른 프로그램을 시작할 수도 있다면 좋을 것입니다.

답변1

당신은 다음과 같은 것을 원합니다 :

echo -e "foo\ntouchit\nbar\nbaz" | while read line; do case $line in
  touchit) touch test.txt;;
  bar)     echo bar found;;
esac; done

답변2

프로그램이 한 번만 시작된 경우:

nc -l 9999 | 
  { awk '/^touchit$/ {matched=1;exit(0);}; 
    END {if(matched==1) { exit(0); } else exit(1); }'
    && echo ja; }

불행히도, nc그것은 즉시 이루어지지 않았습니다 touchit.

관련 정보