Можно ли направить stdout на одном сервере в stdin на другом сервере?

Можно ли направить stdout на одном сервере в stdin на другом сервере?

stdoutна одном сервере CentOS необходимо передать stdinна другой сервер CentOS. Это возможно?

Обновлять

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

решение1

Это безоговорочное «да».

Когда кто-то использует sshдля выполнения команды на удаленном сервере, он выполняет своего рода причудливое внутреннее перенаправление ввода/вывода. На самом деле, я считаю, что это одна из тонко приятных функций OpenSSH. В частности, если вы используете sshдля выполнения произвольной команды на удаленной системе, то ssh сопоставит STDINи STDOUTс командой, которая выполняется.

Для примера предположим, что вы хотите создать резервную копию tarball, но не хотите или не можете хранить ее локально. Давайте взглянем на этот синтаксис:

$ tar -cf - /path/to/backup/dir | ssh remotehost "cat - > backupfile.tar"

Мы создаем tarball и записываем его в STDOUT, нормальные вещи. Поскольку мы используем ssh для выполнения удаленной команды, STDIN сопоставляется с STDIN. catКоторый мы затем перенаправляем в файл.

решение2

Удобный способ передачи данных между хостами, когда вам не нужно беспокоиться о безопасности передачи данных по кабелю, — это использование netcatна обоих концах соединения.

Это также позволяет вам настраивать их асинхронно:

На «приемнике» (на самом деле у вас будет двусторонняя связь, но проще думать об этом так) выполните:

nc -l -p 5000 > /path/to/backupfile.tar

А на «отправителе» выполните:

tar cf - /path/to/dir | nc 1.2.3.4 5000

решение3

Очень мощный инструмент для создания одно- и двунаправленных соединений - этоsocat. Для краткого обзора возможностей, посмотрите примеры в егостраница руководства.

Он netcatполностью заменяет и аналогичные инструменты и имеет поддержку для шифрованных соединений ssl. Для новичков это может быть не так просто, но по крайней мере хорошо знать, что это существует.

решение4

Попробуйте поместить свой открытый ключ SSH на другой хост всего одной командой

ssh [email protected] 'cat >> .ssh/authorized_keys' < .ssh/id_rsa.pub

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