Скрипт Bash, выходящий из оболочки - PullRequest
1 голос
/ 19 января 2012

Я пытаюсь написать bash-скрипт, который выполняет несколько команд от имени разных пользователей для автоматизации процесса установки.

В какой-то момент у меня есть

su gpadmin
gpperfmon_install --enable --password password --port 5432
y  
gpstar
y 

su gpadmin запускается от имени пользователя root, и после запуска скрипт останавливается, пока я не выйду из gpadmin и не вернусь от имени пользователя root.

Как можно переключиться на нового пользователя, не останавливая сценарий?

Извините за невежество, я попытался Google, но не нашел ничего, что работало. Любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 19 января 2012

Вам необходимо использовать параметр -c для su, чтобы он выполнил команду и затем завершил работу.С параметрами, которые вы указали для su, он запустит оболочку gpadmin по умолчанию, которая будет блокироваться до ее закрытия.Судя по тому, что у вас уже есть код, похоже, что gpperfmon_install - это интерактивное приложение, что является еще одной проблемой.Иногда вы можете использовать здесь документ, но в других случаях вам нужно будет использовать expect.

su gpadmin -c 'gpperfmon_install --enable --password password --port 5432 << EOF
y
gpstar
y
EOF'
...