2014-10-07 3 views
0

Я хочу сделать что-то вроде нижеКак запустить несколько команд над Судо с помощью другого пользователя

ssh -t 10.x.xx.xxx "sudo -s -u user1 /bin/bash -c 'tar --warning=none -xf abc.tgz;cd abc/def;'" 

Но это дает мне следующую ошибку

дегтя: Вы должны указать один из -Acdtrux' or --test -label ' Попробуйте tar --help' or tar --usage' для получения дополнительной информации.

+1

Команда 'cd' довольно бессмысленна; оболочка, в которой вы меняете рабочий каталог, выходила сразу после выполнения команды. – chepner

+0

@chepner На самом деле есть много других команд, следующих за tar, например, я добавил команду «cd». Итак, как я могу убедиться, что команды после tar также запускаются как user1. – tushR

+0

Это немного сложно. вам примерно нужно: 1) запустить tar 2) сделать что-нибудь еще, что вы хотите 3) запустить интерактивную оболочку, чтобы что-то все еще выполнялось, чтобы предотвратить «ssh» от выхода и выхода из системы. Было бы намного проще, если бы вы могли войти в систему как 'user1', но это потребует наличия пароля, а не использования' sudo' с вашим собственным паролем. (Если вам не нужно оставаться в системе, я просто предположил, что из 'cd'.) – chepner

ответ

0

Возможно, вам просто нужно опустить - до x в команде tar. В противном случае то, что у вас есть, более или менее корректно, хотя и немного дольше, чем нужно. Если user1 не имеет оболочку входа в систему, кроме /bin/bash и вы потребность использовать bash, вы можете сократить команду

ssh 10.x.xx.xxx 'sudo -u user1 -s "tar --warning=none xf abc.tgz; ..."' 

Строка аргумент -s автоматически передается в качестве аргумента -c для любой оболочки запускается -s.

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