2014-08-26 2 views
0

Мой сценарий выглядит следующим образом.Несколько команд в sudo over ssh в сценарии оболочки

#!/bin/bash 

version = 1.1 

echo "Enter username" 

read UserName 

ssh -t [email protected] bash -c " ' 

./runSomeScript 

echo "Entering Sudo" 

sudo -s -u user1 -c "cd random; ./randomscrip xx-$version-yy" 

'" 

Но это не работает.

В принципе, я хочу сделать ssh для учетной записи. Затем выполните runSomeScript Затем выполните sudo с пользователем как user1, а затем запустите команды cd random и ./randomscrip (с аргументом xx-Version-yy в качестве аргумента) только как пользователь sudo. Но команды внутри sudo не работают.

ответ

2

Ваше цитирование немного небрежно. Вы используете двойные кавычки для первого и третьего уровней цитирования, и оболочка не может сказать один из другого. Сделайте что-нибудь, как это вместо:

sudoScript="cd random; ./randomscrip xx-${version}-yy" 
sshScript=' 
    ./runSomeScript 
    echo "Entering Sudo" 
    sudo -s -u user1 bash -c '"'${sudoScript}'"' 
' 
ssh -t ${UserName}@server "${sshScript}" 

Но учтите, что если вы вставляете любые одиночные кавычки, он все равно будет идти не так, если не добавить слой оболочки кавычки.

Наконец, удалите пробелы вокруг =, если вы назначили version.

+0

Не работает, команды в sudoScript не работают. Команды в sudoScript выполняются в сеансе ssh вместо запуска в режиме sudo. –

+0

@ A.G. Ты прав. Кажется, sudo -s действительно не запускает команду в оболочке, поскольку обещанная страница man. Я отредактировал его и протестировал его, чтобы убедиться, что он работает. – aecolley

+0

Я знаю, что это поздно. Благодарю. –

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