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

echo 'My text' | ssh me@my.host "cat >> ~/my.output"

который просто добавит «Мой текст» к удаленному файлу. Но допустим, я нахожусь на my.node и хочу записать этот результат в файл на my.host:

echo "`hostname`:My text" | ssh me@my.host "cat >> ~/my.output"

И я ожидаю увидеть my.node:My text в ~/my.output на my.host . Но то, что я на самом деле вижу, это: my.host:My text : мой текст .

Как я могу заменить значение имени hostname перед командой ssh ? Является ли это возможным? Я также попробовал это:

echo "$(hostname):My text" | ssh me@my.host "cat >> ~/test.output"

1 ответ1

0

Итак, вы хотите запустить локальный скрипт удаленно.

Конечно, вы можете сделать следующее:

ssh me@my.host 'echo "$(hostname):My text" >> ~/test.output'

Но вы также можете переместить этот код в файл сценария и сделать это:

ssh me@my.host < myscript.sh

И внутри myscript.sh:

echo "$(hostname):My text" >> ~/test.output

Если вы не хотите помещать перенаправление stdout в сценарий, вы можете добавить его перед отправкой по ssh-клиенту. Например:

cat myscript.sh | sed '1iexec >> ~/test.output' | ssh me@my.host

Это добавляет перенаправление stdout в первую строку скрипта (1i). Используйте 2i если у вас есть шебанг.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .