Выполнение сценария оболочки от удаленного сервера на локальной машине

Попытайтесь только отредактировать файл, и вставка включают конец.
Вы хотите автоматизированный? Попробуйте с сервера, где Вы хотите добавить ключ, чтобы сделать:

ssh-copy-id -i id_rsa.pub login@hostname

Можно всегда пробовать ssh-add на сервере, где Вы имеете authorized_keys файл хранится.

Много возможностей :D

5
19.01.2013, 22:46
3 ответа

Необходимо будет загрузить содержание сценария в некотором роде. Вы могли сделать

ssh remote-host cat script.bash | bash

Но это имело бы тот же вид проблемы как:

cat script.bash | bash

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

Затем лучшая альтернатива (но Вам была бы нужна оболочка с поддержкой замены процесса как ksh, zsh или удар) будет:

bash <(ssh remote-host cat script.bash)

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

У Вас может также быть содержание удаленного сценария, выполняемого в текущем процессе удара с:

eval "$(ssh remote-host cat script.bash)"

Но это загружает сценарий полностью (и хранит его в памяти) прежде, чем выполнить его.

Очевидное решение состояло бы в том, чтобы сделать:

. <(ssh remote-host cat script.bash)

Но остерегайтесь этого, некоторые версии удара имеют проблемы с этим.

11
27.01.2020, 20:34
  • 1
    Определенно, мы должны так или иначе выбрать содержание сценария (команды) и использование bash вполне, как он' мое значение по умолчанию. Кажется тонким и практическим решением. –  Googlebot 19.01.2013, 23:06

Смонтируйте удаленную файловую систему, содержащую сценарий с sshfs. Это делает сценарий локальным файлом, который Вы знаете, как выполниться.

mkdir /path/to/remote-host
sshfs remote-host:/ /path/to/remote-host
/path/to/remote-host/path/to/script
2
27.01.2020, 20:34

Это старый вопрос, но он появился как один из первых запросов в Google, так что вот обновление несколько лет спустя.

Это можно сделать в одной строке с помощью scp:

scp remote-host@/full-path/script.sh. &&./script.sh

Файл копируется с удаленного хоста в текущий рабочий каталог, а затем выполняется из текущего рабочего каталога

-1
27.01.2020, 20:34

Теги

Похожие вопросы