Как я могу выполнить скрипт с моего локального компьютера в определенном (но переменном) каталоге на удаленном хосте? - PullRequest
0 голосов
/ 05 апреля 2011

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

ssh -T remotehost < localscript.sh

Теперь мне нужно разрешить другим указывать каталог, в котором скрипт будет запускаться на удаленном хосте.

Я пробовал такие команды, как

 ssh -T remotehost "cd /path/to/dir" < localscript.sh
 ssh -T remotehost:/path/to/dir < localscript.sh

и я даже попытался добавить DIR=$1; cd $DIR к сценарию и использовать

 ssh -T remotehost < localscript.sh "/path/to/dir/"

увы, ни одна из этих работ. Как я должен это сделать?

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011
echo 'cd /path/to/dir' | cat - localscript.sh | ssh -T remotehost

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

Также вы можете посмотреть на почтенный инструмент http://en.wikipedia.org/wiki/Expect. Он часто используется для написания сценариев на удаленных машинах. (И да, обработка ошибок - это проблема долгосрочного обслуживания.)

1 голос
/ 09 декабря 2013

Еще два способа изменить каталог на удаленном хосте (переменно):

echo '#!/bin/bash
cd "$1" || exit 1
pwd -P
shift
printf "%s\n" "$@" | cat -n
exit
' > localscript.sh

ssh localhost 'bash -s "$@"' <localscript.sh '/tmp' 2 3 4 5 
ssh localhost 'source /dev/stdin "$@"' <localscript.sh '/tmp' 2 3 4 5 

# make sure it's the bash shell to source & execute the commands
#ssh -T localhost 'bash -c '\''source /dev/stdin "$@"'\''' _ <localscript.sh '/tmp' 2 3 4 5 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...