Como criar uma conexão de cliente permanente com o netcat?

7

Estou escrevendo um script que lê constantemente uma pasta em um loop para enviar dados para um servidor em um intervalo de tempo definido. Estou usando o netcat como a ferramenta para se conectar ao servidor e enviar os dados. Meu pseudo código seria parecido com:

while true
do
    read_folder()
    process_data() > result.txt
    cat result.txt > netcat ip port
    wait 10 sec
done

Meu único problema é que, no cenário, o cliente conecta e desconecta a conexão TCP / IP ao servidor todas as vezes. Eu preferiria estabelecer a conexão no início do script e fechá-lo no final.

Existe alguma maneira de isso ser feito com ferramentas de linha de comando em um script bash?

    
por jmbouffard 30.06.2011 / 15:06

2 respostas

3

Dois processos separados: um que copia result.txt para o netcat. Result.txt é alimentado através de outro processo.

echo -n >result.txt
tail -f result.txt | nc ip port &
while true
do
    read_folder()
    process_data() > result.txt
    wait 10 sec
done
    
por 07.07.2011 / 05:57
4

Basta colocar o redirecionamento fora do loop.

while true; do
    read_folder
    process_data
    sleep 10
done | netcat $ip $port

Se você precisa gerar a saída padrão do loop de dentro do loop, desvie-o através de outro descritor de arquivo.

{
  while true; do
      read_folder
      echo tick >&3
      process_data
      sleep 10
  done | netcat $ip $port
} 3>&1
    
por 30.06.2011 / 19:22