Як надсилати повідомлення як до netcat, так і до іншого сценарію?


1

Я намагаюся зробити якийсь інтерфейс клієнт-сервер. Подумайте про це як чат один на один.

Я хочу досягти двох горизонтальних поглядів. Знизу для мого (серверного) введення, зверху для клієнтського виводу та мого вводу. Обидва форматовані (наприклад, додана часова марка). Я з'єднуюся за допомогою netcat. Мені вдалося розділити екран, форматувати та друкувати вхідні дані. Що мені бракує - це надрукувати свій внесок у верхньому вікні разом з надсиланням його клієнту. Я використовую названу трубу. Я починаю все з тимчасової голої команди screen -c screens. Надалі все почнеться від третього сценарію з параметрами). Я використовую 64-розрядний дистрибутив на основі debian CrunchBang.

Можливо, expectміг би вирішити проблему? Будь-яка допомога буде вдячна.

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

конфігурація екранів:

startup_message off

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

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

focus bottom

Вигляд вікна:

введіть тут опис зображення

Відповіді:


1

Найпростіший спосіб був би через tee http://man7.org/linux/man-pages/man1/tee.1.html та названу трубу. http://man7.org/linux/man-pages/man1/mkfifo.1.html

Створіть фіфо

$ mkfifo тимчасовий файл

Вставте трійник в середину труби, що виводиться в цей файл

$ команда | Тимчасовийфайл | інша команда &

Введіть вміст фіфо в свою третю команду

$ thirdcommand <тимчасовий файл

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.