2010-09-07 3 views
5

Tôi đang viết tập lệnh bash gọi nhiều tập lệnh khác.
Một số tập lệnh phải được thực thi dưới dạng user_1 nhưng một số tập lệnh là user_2.
Các tập lệnh phải được gọi theo trình tự nghiêm ngặt. Tôi bắt đầu tập lệnh của mình là user_1 và sử dụng su nhiều lần để trở thành user_2. Những lần này yêu cầu mật khẩu, vì vậy tôi phải nhập lại mật khẩu nhiều lần. Tôi muốn tránh điều đó, nhưng su không có tham số mật khẩu.
sudo và mong đợi không được cài đặt.Thực thi tập lệnh sử dụng nhiều người dùng hơn

Trả lời

0

Tôi đã giải quyết được sự cố khi sử dụng ssh. Tôi đã tạo khóa xác thực cho user_1 và được xuất bản cho user2. Không cần thêm mật khẩu nữa.

ssh -l user_1 hostname "command_1; command_2" 
1
  • Thực hiện một ngã ba (sử dụng '&') cho người dùng_1 và cho người dùng_2. Họ nên giao tiếp (tương tự như khách hàng-serwer) bằng cách sử dụng 'khóa tập tin' (semaphore). Ví dụ USER_1 làm một cái gì đó và kiểm tra user_2 là 'tập tin khóa' tồn tại trong thời gian ... ngủ loop

  • Có lẽ đó là ngu ngốc, nhưng bạn có thể sử dụng ssh [email protected] phím cuối

+0

Đó cũng là ý tưởng đầu tiên của tôi và nó chắc chắn sẽ là một giải pháp tuyệt vời. Tôi thấy nó quá nguy hiểm. Nó có thể gây ra vấn đề trong tương lai khi kịch bản trở nên hài hước hơn. –

1

Nếu bạn tình cờ có zsh, tôi nghĩ bạn có thể làm điều này một cách dễ dàng - một cái gì đó như:

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

Nếu bạn đang mắc kẹt, và có zsh, nó là giá trị một thử anyway.

+1

Bash 4 và ksh cũng có coprocesses. –

1

Bạn có thể chạy dưới dạng gốc. Âm thanh nguy hiểm? Không, nếu bạn đang cẩn thận và trước mỗi lệnh với su và thêm tên người dùng như vậy:

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

này sẽ (giả sử bạn bắt đầu như là người chủ) thay đổi người dùng thành user_1 trước khi chạy script1 sau đó quay lại root rồi thay đổi thành user_2 để chạy script2 .. tất cả mà không yêu cầu nhiều mật khẩu.

+0

Âm thanh hay, nhưng tập lệnh của tôi phải chạy trên máy chủ của công ty. Mật khẩu gốc chỉ được biết cho người quản trị hệ thống. –

+0

Bạn có thể cung cấp thêm một số chi tiết về lý do bạn cần hai người dùng không? Bạn có mật khẩu cho cả hai .. Có thể bạn có thể chown các tập tin kết quả ở cuối? – Spaceghost

+0

Đây sẽ là tập lệnh cài đặt. Chúng tôi đang sử dụng 2 công cụ khác nhau cho sự tán dương của chúng tôi. Cả hai công cụ cần phải được cài đặt như là người dùng đặc biệt. Quy tắc này được yêu cầu bởi nhà sản xuất các công cụ. Các thành phần của các công cụ được xây dựng trên mỗi khác. Điều đó có nghĩa là tôi phải cài đặt công cụ đầu tiên hơn là bắt đầu một số thành phần. Tiếp theo, tôi phải cài đặt công cụ 2. Bắt đầu các thành phần khác từ công cụ đầu tiên, thực hiện một số thao tác khác. Đây là kịch bản thô. –