Я хочу запустить скрипт удаленно. Но система не распознает путь. Он жалуется, что "нет такого файла или каталога". Я правильно это использую?
ssh [email protected] './test/foo.sh'
Я хочу запустить скрипт удаленно. Но система не распознает путь. Он жалуется, что "нет такого файла или каталога". Я правильно это использую?
ssh [email protected] './test/foo.sh'
Backticks запускает команду в локальной оболочке и помещает результаты в командную строку. То, что вы говорите, это "выполнить./test/foo.sh", а затем передать вывод, как если бы я набрал его в командной строке здесь ".
Попробуйте выполнить следующую команду и убедитесь, что это путь из вашего домашнего каталога на удаленном компьютере на ваш script.
ssh [email protected] './test/foo.sh'
Кроме того, script должен находиться на удаленном компьютере. То, что это делает, по существу, записывает вас на удаленный компьютер с указанной командой в качестве вашей оболочки. Вы не можете запустить локальный script на удаленном компьютере, как это (если только не интересный трюк, который я не знаю).
Ты можешь сделать:
ssh [email protected] 'bash -s' < /path/script.sh
Если вы хотите выполнить локальный скрипт удаленно, без сохранения этого скрипта, вы можете сделать это следующим образом:
cat local_script.sh | ssh [email protected] 'bash -'
Это работает как шарм для меня.
Я делаю это даже из Windows в Linux, учитывая, что на вашем компьютере Windows установлен MSYS.
Я не знаю, можно ли запустить его именно так.
Обычно я сначала копирую его с помощью scp, а затем заходим для его запуска.
scp foo.sh [email protected]:~
ssh [email protected]
./foo.sh
Сделайте исполняемый файл script пользователем "Kev", а затем удалите попытку, выполняемую командой
sh [email protected] /test/foo.sh
Мне удалось вызвать сценарий оболочки с помощью этой команды:
ssh ${serverhost} "./sh/checkScript.ksh"
Конечно, checkScript.ksh
должен существовать в каталоге $HOME/sh
.