2017-02-15 2 views
0

Я делаю ssh на сервере и выполняю сценарий оболочки, как показано ниже.ssh выполнить скрипт оболочки с аргументами

ssh -o 'StrictHostKeyChecking no' [email protected]$some_ip_address sh execute_all.sh '/usr/local/bin/ruby /home/user1/run.rb 2>&1 >> /home/user1/run.log' 

Содержимое моего файла оболочки, как показано ниже

if [ -z "$1" ] 
    then 
    echo "Please supply the command to be executed" 
    exit 1 
fi 
echo "$1" 
COMMAND=$1 
eval $COMMAND 
if [ $? -eq 0 ]; then 
    exit 0 
else 
    exit 1 
fi 

Когда я бегу все это я получаю в журналах является '/ USR/местные/бен/узел. Я также пробовал $ *, и он печатает '/ usr/local/bin/ruby ​​/home/user1/run.rb 2'. Очевидно, что моя команда eval не может выполнить.

Я хочу запустить всю свою команду в сценарии оболочки. Как это сделать.

ответ

0

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

SSH -o 'StrictHostKeyChecking нет' user1 @ $ some_ip_address «ш execute_all.sh«/ USR/местные/бен/рубин /home/user1/run.rb 2> & 1 >> /home/user1/run.log»

Обратите внимание на новые двойные кавычки.

Смежные вопросы