У меня есть 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