Мне нужно дать пользователю возможность отправлять / получать сообщения по сети (используя netcat
), пока соединение установлено (пользователь в этом случае использует nc
как клиент ).Проблема в том, что мне нужно отправить строку до того, как пользователь начнет взаимодействовать.Моя первая попытка была:
echo 'my first line' | nc server port
Проблема с этим подходом заключается в том, что nc
закрывает соединение, когда echo
завершает его выполнение, поэтому пользователь не может отправлять команды черезstdin, потому что оболочка возвращена ему (а также ответ от сервера не получен, потому что он задерживается на несколько секунд, чтобы начать отвечать, и, когда nc
закрывает соединение, ответ никогда не будет получен пользователем).
Я также пробовал группировать команды:
{ echo 'my first line'; cat -; } | nc server port
Это работает почти так, как мне нужно, но если сервер закрывает соединение, он будет ждать, пока я не нажму <ENTER>
, чтобы снова выдать мне оболочку.Мне нужно вернуть оболочку, когда сервер закрывает соединение (в этом случае клиент - моя команда nc
- никогда не закрывает соединение, кроме случаев, когда я нажимаю Ctrl + C).
Я также безуспешно пробовал именованные каналы.
У вас есть какие-либо советы о том, как это сделать?
Примечание: я использую openbsd-netcat.