Usando o netcat para iniciar um programa? [duplicado]

1

Suponha que eu deixo o netcat escutar em alguma porta no PC1 (IP: 10.0.0.1) com:

PC1:~$ nc -l 9999

Eu conecto do PC2 (IP: 10.0.0.2) e envio algumas strings:

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

Como eu tenho que modificar o primeiro comando no PC1 de forma que o comando 'touch test.txt' seja executado no PC1 sempre que eu enviar 'touchit' do PC2?

Seria ótimo fazer isso com uma combinação inteligente de comandos e tubulações padrão. Naturalmente, 'touch test.txt' poderia então ser substituído por um comando arbitrário. Seria extremamente legal se você pudesse lançar programas diferentes com strings de comando diferentes enviadas do PC2.

    
por multimax 11.11.2014 / 00:35

2 respostas

1

Você quer algo assim:

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

Se o programa for iniciado apenas uma vez:

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

Infelizmente nc não termina imediatamente após o touchit .

    
por 11.11.2014 / 02:05

Tags