1 votes

Comment envoyer un message à la fois à netcat et à un autre script ?

J'essaie de créer une interface client-serveur. Pensez-y comme à un chat en tête-à-tête.

Ce que je veux obtenir, ce sont deux vues horizontales. En bas pour mon entrée (serveur), en haut pour la sortie client et mon entrée. Les deux sont formatées (par exemple, ajout de l'horodatage). J'établis la connexion en utilisant netcat. J'ai réussi à diviser l'écran, à formater et à imprimer les données entrantes. Ce qui me manque, c'est d'imprimer mon entrée dans la fenêtre du haut en même temps que je l'envoie au client. J'utilise named pipe. Je démarre tout avec la commande bare temporaire screen -c screens . À l'avenir, tout commencera à partir du troisième script avec des paramètres). J'utilise CrunchBang, une distro 64 bits basée sur Debian.

Peut-être expect pourrait résoudre le problème ? Toute aide serait appréciée.

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

configuration des écrans :

startup_message off

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

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

focus bottom

Regard de fenêtre :

enter image description here

1voto

JPot Points 2078

Le moyen le plus simple serait de passer par le tee http://man7.org/linux/man-pages/man1/tee.1.html et un tuyau nommé. http://man7.org/linux/man-pages/man1/mkfifo.1.html

Créer un fifo

$ mkfifo temporaryfile

Insérez le té au milieu du tuyau qui sort vers ce fichier.

$ command | tee temporaryfile | othercommand &

Envoyez le contenu du fifo dans votre troisième commande

$ thirdcommand < temporaryfile

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X