Я пытаюсь сделать какой-нибудь интерфейс клиент-сервер. Думайте об этом как один на один чат.
Чего я хочу добиться, так это двух горизонтальных представлений. Низ для моего (серверного) ввода, верх для клиентского вывода и моего ввода. Оба отформатированы (например, добавлена метка времени). Я делаю соединение с помощью 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
Окно выглядит: