Вопрос Pass param для ssh user @ server bash --login -c FILE.rb PARAMS


Мне нужно запустить скрипт ruby ​​ruby ​​поверх ssh на удаленном сервере:

# $1 - get params from local bash session
ssh user@server bash --login -c FILE.rb $1

FILE.rb теперь не получает никаких параметров bash - login - необходимость загрузки рубина (над RVM)


1
2017-12-11 14:27


происхождения




ответы:


Вы можете попытаться заключить всю команду в кавычки, чтобы убедиться, что она не интерпретируется ssh:

ssh user@server "bash --login -c \"FILE.rb $1\""

Если это не сработает, убедитесь, что все необходимые вам параметры действительно в переменной $1 от echoперед ssh вызов.

Минимальный рабочий пример:

param="--version";
ssh user@server "bash --login -c \"git $param\""

1
2017-12-11 14:37



$ Пары = "- версия"; ssh user @ server "bash --login -c git $ param". Ошибка: = - версия: команда не находит - mixo
исправлено до param = "- version"; ssh user @ server "bash --login -c git $ param", но результат по-прежнему "git" не "git -version" - mixo
Попробуйте также указать аргумент bash, поскольку я изменил ответ, но обратите внимание, что кавычки должны быть экранированы, когда я пишу. - Jakuje


-c принимает только один аргумент, поэтому требуется больше цитирования:

ssh user@server bash --login -c "FILE.rb $1"

1
2017-12-11 14:44



$ Пары = "- версия"; ssh user @ SERVER bash --login -c "git $ param" ОШИБКА: = - версия: команда не найдена - mixo
@mixo param="--version", а не $param="--version", - muru
я исправляю param = "- version", но результат результата по-прежнему "git" без "git -version" - mixo