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
.