Como enviar mensagem para o netcat e outro script?

1

Estou tentando criar uma interface cliente-servidor. Pense nisso como um bate-papo individual.

O que eu quero alcançar são duas visualizações horizontais. Bottom para minha entrada (server), top para saída do cliente e minha entrada. Ambos formatados (por exemplo, timestamp adicionado). Estou fazendo conexão usando o netcat. Consegui dividir a tela, formatar e imprimir os dados recebidos. O que me falta é imprimir minha entrada na janela superior junto com o envio para o cliente. Estou usando o pipe nomeado. Eu começo tudo com o comando bare temporário screen -c screens . No futuro, tudo começará a partir do terceiro script com parâmetros). Estou executando a distro baseada em debian CrunchBang de 64 bits.

Talvez expect possa resolver o problema? Qualquer ajuda seria apreciada.

server.sh:

#!/bin/bash

pipe=/tmp/pipe
trap "rm -f $pipe" EXIT

if [[ ! -p $pipe ]]; then
    mkfifo $pipe
    #chmod +x $pipe
fi

nc localhost -lp 53656 >$pipe &

while true
do
    read message

    echo "$message" >$pipe
    clear
done

conv.sh:

#!/bin/bash
# conversation window

clear
pipe=/tmp/pipe

while true
do
    if read line <$pipe; then
        if [[ "$line" == "quit" ]]; then
            break
        fi

        NOW=$(date "+%H:%M")
        echo "($NOW) Client: $line"
    fi
done

telas de configuração:

startup_message off

split
focus
screen ./server.sh
title "input"

focus top
screen ./conv.sh
title "conv"

focus bottom

Vista da janela:

    
por Mars 25.05.2014 / 17:06

1 resposta

1

A maneira mais fácil seria via tee link e um pipe nomeado. link

Crie um fifo

$ mkfifo temporaryfile

Insira o tee no meio do pipe saindo para esse arquivo

$ comando | tee temporaryfile | outro comando &

Alimente o conteúdo do fifo em seu terceiro comando

$ thirdcommand < temporaryfile

    
por 26.05.2014 / 04:42