Сценарий оболочки Linux - Как переключить пользователя и запустить скрипт?

В настоящее время я пишу сценарий .sh для развертывания разных приложений на 4 разных машинах. Сейчас у меня проблемы с запуском скрипта от имени другого пользователя. Мне нужно войти в систему с помощью myUser с моими учетными данными, а затем sudo su для пользователя2, чтобы запустить определенный скрипт.

Обычно я вручную делаю следующее:

ssh myUser@remotehost
[Type in password]
sudo su - user2
cd /path/only/accessible/to/user2
./someScript.sh

когда я пытался

ssh -t myUser@$remotehost "sudo su - user2 && /path/only/accessible/to/user2 && ./someScript.sh"

Меня спросили мой пароль, после чего я остался в системе как user2, без какой-либо обратной связи со сценарием, который обычно давал бы мне некоторую информацию.

Что я делаю не так?


person Anthony Garneau    schedule 08.02.2018    source источник
comment
1. не используйте в sudo su - или sudo или su, но не оба вместе. 2. в ssh вы забыли сделать cd, почему бы не запустить скрипт напрямую(без cd), т.е. "sudo su - user2 && /path/only/accessible/to/user2/someScript.sh"   -  person sKwa    schedule 08.02.2018


Ответы (2)


Попробуйте
ssh -t myUser@$remotehost "sudo -u user2 /path/only/accessible/to/user2/someScript.sh"

Если после этого вам понадобится доступ к оболочке, вы можете использовать
ssh -t myUser@$remotehost "sudo -u user2 /path/only/accessible/to/user2/someScript.sh && /bin/bash -l"

person uaBArt    schedule 08.02.2018
comment
почему sudo su? вам не кажется, что это что-то не так? это плохая практика. - person sKwa; 08.02.2018
comment
Отредактировано (использовано sudo su как вопрос от Энтони). Теперь ответь без него - person uaBArt; 08.02.2018
comment
Сработало бы, но у меня нет прав на выполнение от имени пользователя2 на этой машине (что странно, но да), только для переключения пользователя. Я все равно отмечу ваш ответ как принятый для обучения. Спасибо! Остальная часть моей борьбы будет с сисадмином - person Anthony Garneau; 13.02.2018

Обновление, если кто-то задается вопросом об этом.

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

ssh -i /path/to/sshKey user2@$remoteHost "/path/only/accessible/to/user2/someScript.sh"
person Anthony Garneau    schedule 17.04.2018