TL; DR: Да, но вам понадобится что-то более умное, чем подключенный cat
cat
просто объединяет все файлы, предоставленные ему, и выгружает их в stdout
, -
представляет стандартный ввод, так что способ работы указанной пары Q / A заключался в объединении стандартного ввода-вывода с файлом.
netcat
- прекрасный инструмент для того, что вы пытаетесь сделать, например, открыть необработанный канал для другого порта. Думаю, вам лучше задать вопрос: "Правильный ли инструмент" cat
выводит вывод по конвейеру? Нет.
Проблема с простым использованием cat ... | netcat ...
в том, что это односторонняя сделка. Выход cat
используется как вход для netcat
, но выход будет идти в stdout
, канал не двусторонний, вам нужна интерактивность.
Если вы хотите интерактивно выполнять действия на основе ответов сервера по каналу netcat, существует целый ряд способов программного взаимодействия с каналом.
Вы можете использовать read
например, или expect
.
Если вы хотите немного расширить свой ящик с инструментами, я предлагаю использовать ncat
, который является более современной реализацией netcat
и имеет удобную опцию -e
, которая позволяет прикреплять команду или скрипт к netcat
каналу. Если вы не можете достать netcat
с -e
, вам может потребоваться кое-что узнать об именованных каналах и Перенаправление ввода-вывода, чтобы получить тот же эффект.
Я хотел протестировать некоторые из этих вещей, прежде чем писать этот ответ, см. ниже тесты / примеры
Я не писал сервер прослушивания, который обрабатывал несколько файлов, отправленных через netcat
, я просто предполагаю, что у вас это работает, но я могу смоделировать некоторое программное взаимодействие со стороны клиента и сделать сервер вручную.
Мое фиктивное взаимодействие "клиент" / "сервер" здесь основано на этой забавной деятельности по установке 2 сеанса ncat для общения друг с другом
Я написал этот простой интерактивный скрипт:
#!/bin/bash
i=0
while true; do
read line
if [[ $line == "goose" ]]; then
echo "zoom"
exit 0
else
i=$(expr $i + 1)
echo "$i ..."
fi
done
Запускаю свой "сервер" ncat -l -p 1337
- Запускаю своего "клиента" под управлением интерактивного скрипта
ncat localhost 1337 -e ./interact.sh
И я управляю «сервером» вручную (поскольку ncat не показывает ясно, I vs O, я пометил ввод с помощью i:
, а вывод с помощью o:
):
i:duck
o:1 ...
i:duck
o:2 ...
i:duck
o:3 ...
i:goose
o:zoom
person
Will Barnwell
schedule
15.08.2017
netcat
, хотя на самом деле это не инструмент для передачи файлов. - person Andrew Henle   schedule 16.08.2017