
У меня есть скрипт оболочки, работающий на сотнях машин Linux, который выводит строку резюме csv в конце. Мне нужно собрать это в один файл, чтобы просмотреть сводку результатов. Есть ли способ передать эту строку csv по сети на одну машину, которая передаст их все в один файл?
Может быть, что-то вроде простого http-сервера, который добавляет >>, печатает все входные данные в файл, а затем скрипт может запустить команду curl, чтобы отправить их на этот сервер?
решение1
Простым решением, позволяющим сотням систем отправлять выходные данные приложения обратно в одну систему, было бы использование netcat
.
Один из центральных серверов, помещенный netcat
в бесконечный цикл для получения входных данных.
while true; do nc -l 4444; done | tee foo.csv
Затем на каждом из хостов приложений запустите
app.exe | nc foo.example.com 4444
Может быть, не очень прочный, но свою задачу он выполняет.
Для более надежного решения настройте rsyslog
на центральном сервере. Затем на каждом из хостов приложений используйте logger --server foo.example.com "your message here"
. Сообщения, отправленные через , logger
будут записаны в файл rsyslog
для дальнейшей обработки. Возможно, сложнее настроить, но проще в долгосрочной перспективе.