Я запускаю удаленный сценарий bash (используя ssh -t 'bash doscript.sh'). В "doscript.sh" у меня есть sudo su anotheruser. В этот момент кажется, что сценарий запускает оболочку, и я остаюсь в этом «интерактивном» сценарии, а остальная часть моего сценария (doscript.sh) не запускается, пока я не наберу «exit». Есть ли способ обойти эту проблему?
Заранее спасибо.
Вот содержимое моего тестового скрипта doscript.sh:
sudo su diy
cd
pwd
whoami
exit
whoami
sudo
запускает оболочку, если вы не укажете иное.
Похоже, вы действительно хотите запустить этот сценарий от имени другого пользователя. Для этого попробуйте что-нибудь вроде этого:
#!/bin/bash
if [ `id -nu` != diy ]; then
sudo -u diy $0 # Re-run this script as user diy
else
# Everything you want to do goes here
fi
Имейте в виду, что /etc/sudoers
должен быть настроен так, чтобы исходный пользователь мог запускать этот сценарий как новый пользователь.
su
как используется в вашем скрипте, запускает только su
линия себя как другой пользователь.
Использовать su - otheruser -c "cmds to execute"
.