Ouça a solicitação recebida na porta no Linux e execute o comando

1

Estou procurando uma solução tão leve quanto possível para escutar em uma porta para uma solicitação específica e, em seguida, executar um comando caso a porta seja atingida e a solicitação correta seja recreditada.

Envie uma solicitação para 192.168.0.10 na porta 5432 com a string my_token . No host (por exemplo, 192.168.0.10 ), execute um comando caso essa porta seja atingida e a string correspondida.

Inicialmente, estava pensando em usar netstat (por exemplo, nc -l 5000 ) e depois executar o comando na alteração. No entanto, idealmente, uma seqüência de caracteres ou tipo de símbolo seria ideal ao lado disso ou similar, mas sem usar um servidor da Web completo - essencialmente algo que pode ser executado em segundo plano com poucos recursos.

    
por Elliot Reed 18.01.2018 / 21:45

1 resposta

3

Isso pode ser feito com nc . O snippet a seguir lê as linhas da porta 5000 e executa some_command se a linha for token ou some_other_command se a linha for foo . Depois que o cliente se desconecta, nc é executado novamente.

while true; do
  nc -l 5000 | {
    while read line; do
      case "$line" in
        token )
          some_command;;
        foo )
          some_other_command;;
      esac
    done
  }
done

Para conversar, execute nc localhost 5000 e digite, por exemplo:

foo
token
whatever
foo

Finalize com Ctrl + D ou Ctrl + C . A desvantagem é: quando um cliente fica conectado, nenhum outro pode se conectar. Para minimizar essas colisões, você pode enviar um comando por vez e desconectar imediatamente:

echo token | nc localhost 5000

ou (no Bash)

echo token > /dev/tcp/127.0.0.1/5000
    
por 18.01.2018 / 22:29