使用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

我如何修改 PC1 上的第一个命令,以便每当我从 PC2 发送“touchit”时,命令“touch test.txt”都会在 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

相关内容