2010-09-07 4 views
5

Piszę skrypt basha, który wywołuje wiele innych skryptów.
Kilka skryptów musi zostać wykonanych jako użytkownik_1, ale kilka jako użytkownik_2.
Skrypty należy wywoływać w ściśle określonej kolejności. Rozpoczynam mój skrypt jako user_1 i używam su wiele razy, aby stać się user_2. Te czasy su wymagają hasła, więc muszę je wiele razy powtórzyć. Chciałbym tego uniknąć, ale su nie ma parametru hasła.
sudo i oczekiwać nie są zainstalowane.Wykonywanie skryptów z większą liczbą użytkowników

Odpowiedz

0

Rozwiązałem problem za pomocą ssh. Wygenerowałem klucz uwierzytelniający dla użytkownika_1 i opublikowany dla użytkownika2. Hasło nie jest już potrzebne.

ssh -l user_1 hostname "command_1; command_2" 
1
  • Zrób widelcem (używając '&') dla użytkownika USER_1 i user_2. Powinny się komunikować (podobnie jak serwer-klient) za pomocą "pliku blokady" (semafora). Na przykład użytkownika USER_1 robi coś i sprawdzanie user_2 jest „plik lock” istnieją w chwilę ... Sleep pętli

  • Może to głupie, ale można użyć ssh [email protected] końcowych klucze

+0

To także był mój pierwszy pomysł i na pewno byłby to świetny rozrzut. Znalazłem to zbyt ryzykowne. Może to spowodować problemy w przyszłości, gdy skrypt stanie się bardziej złożony. –

1

Jeśli zdarzy mieć zsh, myślę, że można to zrobić łatwo - coś jak:

#!/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 
... 

Jeśli utknąłeś i masz zsh, to i tak warto spróbować.

+1

Bash 4 i ksh również mają koprocesy. –

1

Można uruchomić jako root. Brzmi ryzykownie? Nie, jeśli jesteś ostrożny i poprzedzać każde polecenie z su i dodać nazwę użytkownika tak:

su -c użytkownika USER_1 script1 '& & su -c user_2 „script2”

Będzie to (zakładając, że zaczynają jako root) zmień użytkownika na user_1 przed uruchomieniem script1, a następnie z powrotem na root, a następnie zmień na user_2, aby uruchomić skrypt2 .. wszystko bez pytania o wiele haseł.

+0

Brzmi nieźle, ale mój skrypt musi działać na serwerze firmy. Hasło root jest znane tylko administratorowi systemu. –

+0

Czy możesz podać więcej szczegółów o tym, dlaczego potrzebujesz dwóch użytkowników? Masz hasła do obu. Czy na koniec może powinieneś chown plików wyników? – Spaceghost

+0

To będzie skrypt instalacyjny. Używamy 2 różnych narzędzi do naszej aplikacji. Oba narzędzia muszą być zainstalowane jako specjalni użytkownicy. Ta zasada jest wymagana przez producenta narzędzi. Składniki narzędzi są zbudowane na sobie. Oznacza to, że muszę zainstalować pierwsze narzędzie, niż uruchomić niektóre komponenty. Następnie muszę zainstalować 2. narzędzie, uruchomić inne komponenty z pierwszego narzędzia, wykonać kilka innych operacji. To jest trudny scenariusz. –