Выполнение сценариев с использованием большего количества пользователей - PullRequest
5 голосов
/ 07 сентября 2010

Я пишу сценарий bash, который вызывает много других сценариев.
Несколько сценариев должны быть выполнены как user_1, но несколько как user_2.
Сценарии должны вызываться в строгой последовательности. Я запускаю свой скрипт как user_1 и использую su много раз, чтобы стать user_2. В этот раз su требует пароль, поэтому мне приходится многократно его вводить. Я бы хотел этого избежать, но у su нет параметра пароля.
sudo и ожидаемо не установлены.

Ответы [ 4 ]

1 голос
/ 07 сентября 2010

Если у вас есть Zsh, я думаю, вы можете сделать это легко - что-то вроде:

#!/bin/zsh
coproc user1_script
su user2
do_stuff
echo "your_turn" >&p
read MY_TURN
do_more_stuff
echo "your_turn" >&p
read MY_TURN
...

user1_script:

#!/bin/zsh
read MY_TURN
do_stuff
echo your_turn
read MY_TURN
do_more_stuff
...

Если вы застряли, и у вас есть ZshСтоит попробовать в любом случае.

1 голос
/ 09 сентября 2010

Вы можете запустить от имени пользователя root.Звучит рискованно?Нет, если вы осторожны и начинаете каждую команду с su и добавляете имя пользователя следующим образом:

su -c 'script1' user_1 && su -c 'script2' user_2

Это будет (при условии, что выначать с правами root) измените пользователя на user_1 перед запуском script1, затем вернитесь на root, затем перейдите на user_2 для запуска script2 ... все без запроса нескольких паролей.

1 голос
/ 07 сентября 2010
  • Сделайте форк (используя '&') для user_1 и user_2.Они должны общаться (подобно клиент-серверу), используя «файл блокировки» (семафор).Например, user_1 делает что-то, а user_2 проверяет, существует ли «файл блокировки» в , в то время как ... sleep loop

  • Возможно, это глупо, но вы можете использовать ssh user@localhost клавиши завершения

0 голосов
/ 16 сентября 2010

Я решил проблему с помощью SSH.Я сгенерировал ключ аутентификации для user_1 и опубликовал для user2.Пароль больше не нужен.

ssh -l user_1 hostname  "command_1; command_2"
...