Script de shell simples para enviar mensagem de soquete

8

Para fins de teste, preciso criar um script de shell que se conecte a um IP > remoto e envie uma mensagem de soquete TCPIP de texto simples.

    
por Bachalo 12.01.2017 / 14:29

3 respostas

8

Em geral, o conselho com netcat é o melhor caminho.

Mas em bash e ksh você também pode fazer isso:

exec 3<>/dev/tcp/hostname/port
echo "request" 1>&3
response="$(cat <&3)"
    
por 12.01.2017 / 15:20
6

Usando nc ( netcat ).

Servidor:

$ nc -l localhost 3000

Cliente:

$ nc localhost 3000

O servidor e o cliente lerão e gravarão na saída / entrada padrão.

Isso funcionará quando o servidor e o cliente estiverem na mesma máquina. Caso contrário, altere localhost para o nome externo do servidor.

Um pouco mais interessante:

Servidor (no Bash):

#!/bin/bash

coproc netcat -l localhost 3000

while read -r cmd; do
  case "$cmd" in
    d) date ;;
    q) kill "$COPROC_PID"
       exit ;;
    *) echo "What?" ;;
  esac
done <&${COPROC[0]} >&${COPROC[1]}

Sessão do cliente:

$ nc localhost 3000
d
Thu Jan 12 18:04:21 CET 2017
Hello?
What?
q
^C

(o servidor sai após q , mas o cliente fica por perto, então pressionei Ctrl + c ).

    
por 12.01.2017 / 18:10
3

tente netcat (por exemplo, nc)

echo GET / HTTP/1.0 | nc 0 80
HTTP/1.1 400 Bad Request
Date: Thu, 12 Jan 2017 13:44:23 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Length: 311
Connection: close
Content-Type: text/html; charset=iso-8859-1
  • na amostra acima, envio um GET ( echo GET / HTTP/1.0 ) para o meu servidor http local
  • Se você não quiser um protocolo complexo, isso pode fazer o trabalho.
por 12.01.2017 / 14:45