Используйте netcat для прослушивания порта и отправки вывода команды при подключении клиента.

Используйте netcat для прослушивания порта и отправки вывода команды при подключении клиента.

У меня есть Raspberry Pi (Debian Linux), подключенный к моей локальной сети, который может считывать данные с некоторых подключенных устройств и выводить их в STDOUT.

Предположим, программа запущена на «Сервере», и я хочу направить вывод скрипта /usr/bin/dataна порт 1234.

Я хочу, чтобы любой клиент мог извлечь вывод этого скрипта, подключившись к этому порту, используя что-то вроде

nc Server 1234 > ServerData.txt

Я хочу, чтобы сервер оставался активным, запускал скрипт для каждого соединения, обслуживал данные и затем закрывал соединение с клиентом. Сервер должен оставаться активным и ждать следующего соединения.

Какую команду netcat нужно запустить на сервере???

решение1

Потребуется одна из более продвинутых версий netcat. Вы можете использовать ncatили socat:

Серверная сторона

При подключении клиента запустите исполняемую программу /usr/bin/dataи отправьте вывод программы клиенту.

Метод NCAT:

$ ncat -l 1234 -c '/usr/bin/data' --keep-open

Метод SOCAT

$ socat -U TCP-LISTEN:5403,fork EXEC:'/usr/bin/data',stderr,pty,echo=0

Сторона клиента:

Подключитесь к серверу и получите вывод с сервера.

Метод NCAT для подачи

$ ncat Server 1234 | tee ServerData.txt

Метод NC (netcat) для stdout

$ </dev/null nc <Server.ip> 5403 > /dev/stdout

для сохранения в файл замените /dev/stdout на имя файла

Метод WGET для файла

$ wget -q <Server.ip>:5403 -O myfile.txt

для вывода результатов замените myfile.txt на /dev/stdout

Связанный контент