echo server com netcat ou socat

17

Eu quero que um servidor de eco UDP receba pacotes e responda exatamente o que recebeu. Como posso simplesmente fazer isso usando netcat ou socat ? Ele deve permanecer vivo para sempre e manipular pacotes vindos de vários hosts.

    
por Hedy 04.01.2012 / 13:26

6 respostas

16

Outra ferramenta parecida com o netcat é a versão nmap, ncat , que tem muitos recursos internos para simplificar coisas como essa. Isso funcionaria:

ncat -e /bin/cat -k -u -l 1235

-e significa que ele executa / bin / cat (para ecoar o que você digita)
-k significa manter vivo, que ele continua escutando após cada conexão
-u significa udp
-l 1235 significa que ele escuta na porta 1235

    
por 06.01.2012 / 02:26
11

Eu usei socat -v PIPE udp-recvfrom:5553,fork para executar o servidor e socat - udp:localhost:5553 para clientes. Este foi de grande ajuda!

    
por 06.01.2012 / 01:16
6

Você também pode usar o socat (em vez de usar o netcat) como echo server e netcat como cliente.

Socat echo server (escuta na porta TCP 1234):

socat -v tcp-l:1234,fork exec:'/bin/cat'

Cliente Netcat (conecta-se ao serverip na porta TCP 1234):

nc serverip 1234
    
por 22.01.2014 / 11:00
2

Você pode escrever um programa em C que garfos nc -u -l -p 4321 e depois usar dup(2) para conectar:

  • nc stdin com o stdout dos pais
  • nc stdout com o stdin do pai

Então, em um loop infinito, o pai lê de stdin e escreve em stdout, independentemente do que o pai lê.

    
por 04.01.2012 / 14:05
0

Se você estiver executando no Windows e usar um ambiente similar ao unix, como o cygwin, o netcat migth não fornecerá o parâmetro -e. Isso funcionou muito bem para mim.

link

    
por 03.08.2013 / 00:57
0

netcat solution pré-instalado em Ubunutu

O netcat pré-instalado no Ubuntu 16.04 vem de netcat-openbsd e não tem a opção -c , mas o manual fornece uma solução:

sudo mknod -m 777 fifo p
cat fifo | netcat -l -k localhost 8000 > fifo

Então, exemplo de cliente:

echo abc | netcat localhost 8000

TODO: como modificar o valor da string de entrada? O seguinte não retorna nenhuma resposta:

cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo

No entanto, o exemplo de shell remoto funciona:

cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo

No entanto, não sei como lidar com solicitações simultâneas.

    
por 29.05.2017 / 18:00