Вопрос по ssh – Как запустить файл сценария удаленно с помощью SSH

45

Я хочу запустить скрипт удаленно. Но система не распознает путь. Он жалуется, что «такого файла или каталога нет». Я правильно его использую?

<code>ssh [email protected] `./test/foo.sh`
</code>

Ваш Ответ

6   ответов
0

Сделайте скрипт исполняемым пользователем"Kev" а затем удалите попробуйте запустить через команду sh [email protected] /test/foo.sh

136

Что вы можете сделать, это.

ssh [email protected] 'bash -s' < /path/script.sh
Отличное решение! проверить это же решение черезssh2 модуль для узла:gist.github.com/mscdex/7c9f8358b8331ea567b7
Спасибо - для меня на MediaTemple, выделение строки таким образом, включая 'bash -s'; Аргумент был то, что мне было нужно. Спасибо!
Этот ответ WAAAY лучше, чем принятый ответ, и точно отвечает на вопрос, тогда как принятый ответ - нет.
Просто ссылки, как это сделать в Perl для справки:stackoverflow.com/questions/18236988/…
В качестве альтернативы:cat /path/script.sh | ssh [email protected] 'bash -s'
3

Если вы хотите выполнить локальный сценарий удаленно, без сохранения этого сценария, вы можете сделать это следующим образом:

cat local_script.sh | ssh [email protected] 'bash -'

работает как шарм для меня.

Я делаю это даже из Windows в Linux, учитывая, что на вашем компьютере Windows установлен MSys.

41

Backticks запустит команду в локальной оболочке и поместит результаты в командную строку. То, что вы говорите, это «выполнить ./test/foo.sh» и затем передать вывод, как если бы я набрал его в командной строке здесь ».

Попробуйте следующую команду и убедитесь, что это путь от вашего домашнего каталога на удаленном компьютере до вашего сценария.

ssh [email protected] './test/foo.sh'

Также скрипт должен находиться на удаленном компьютере. По сути, вы входите на удаленный компьютер, используя указанную команду в качестве оболочки. Вы не можете запускать локальный скрипт на удаленном компьютере, как этот (если только я не знаю какой-нибудь забавный трюк).

@MarkRushakoff, спасибо за это. Именно то, что мне было нужно!
Да, я подумал, что подобное возможно, но вы не выполняете локальную программу, вы просто копируете ее излишне сложным способом. Если вы собираетесь это сделать, вы можете просто выполнить команду scp /path/to/script.sh user @ server: & amp; ssh user @ server ./script.sh Полагаю, вам нужно дважды вводить пароль, так что да.
Вот забавный трюк, взятый изwpkg.org/Executing_local_programs_and_scripts_remotely: cat / usr / bin / program | ssh user @ server & quot; cat & gt; / tmp / program; chmod 755 / tmp / program; / tmp / program - аргументы & quot;
@psanf Вы всегда можете настроить вход в систему на основе сертификатов, чтобы вам не приходилось вводить пароль.
0

Мне удалось вызвать сценарий оболочки с помощью этой команды:

ssh ${serverhost} "./sh/checkScript.ksh"

конечноcheckScript.ksh должен существовать в$HOME/sh каталог.

1

Я не знаю, возможно ли запустить его именно так.

Я обычно сначала копирую его с помощью scp, а затем захожу, чтобы запустить его.

scp foo.sh [email protected]:~
ssh [email protected]
./foo.sh

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