вот ситуация:
Я написал программу на C, выполняющую некоторые беспроводные измерения на WRT54GL Router (OpenWRT White Russian, Busybox 1.00, клиент Dropbear v0.49). Обратите внимание, что я не могу использовать более свежую версию операционной системы на маршрутизаторе или устанавливать дополнительные пакеты (разрешены только скрипты или небольшие программы).
До сих пор я регистрирую свои результаты измерений каждые 15 минут с маршрутизатора на сервер через
cat localfile | ssh target_address cat ">" remotefile
, который я вызываю из моей программы на C (system ()) для каждого файла журнала, который создается или присутствует в момент запуска журнала. Что мне не нравится, так это то, что системный вызов открывает новую оболочку для каждого отдельного вызова, вызывая некоторые накладные расходы. Хорошая вещь заключается в том, что таким образом данные шифруются, и, поскольку я выполняю соединение для каждого файла, я могу напрямую получать обратную связь для каждого файла с сервера, чтобы я мог удалить журналы с маршрутизатора. (Другие подходы вызывают сценарии с маршрутизатора на сервере, которые затем возвращают значения для ведения журнала, не работали, так как ssh-клиент dropbear не поддерживает этот возврат).
Итак, что я прошу: что может быть более элегантным способом сделать это и уменьшить эти накладные расходы? К настоящему времени я прочитал несколько учебных пособий о том, как использовать сокеты TLS / TCP (чтобы я мог отправлять данные в зашифрованном виде на сервер). Другой возможностью может быть HTTP PUT или POST, но я не уверен, как получить обратную связь для отправляемых данных. Поэтому я просто хотел бы услышать ваше мнение и то, как вы, ребята, постараетесь справиться с этим.
С наилучшими пожеланиями