2013-08-01 40 views
5

Tôi có tập lệnh cục bộ sẽ không chạy mà không có quyền riêng tư trên máy chủ từ xa. Tôi đã chỉnh sửa và cho phép các tập tin sudoers để chạy kịch bản từ thư mục nhà (/ home/username/script). Kịch bản tạo ra một tập tin txt với các kết quả nhưng tôi chuyển hướng đầu ra đến đầu cuối và đường dẫn đầu ra đến một tệp văn bản trên máy cục bộ.Thực thi tập lệnh cục bộ trên máy chủ Linux từ xa

Tôi không thể "ssh user @ hostname sudo -Sv < script.sh> results.txt" vì điều này sẽ không chạy tập lệnh từ máy chủ từ xa, cụ thể là thư mục chính.

Có ai biết một cách (một dòng) để sao chép tập lệnh vào máy chủ từ xa & thực thi nó dưới dạng gốc trong khi truy xuất đầu ra không?

Cảm ơn bạn cho bất kỳ sự trợ giúp

Trả lời

2

Sao chép kịch bản với scp, sau đó chạy nó.

scp script.sh [email protected]: 
ssh [email protected] sudo ./script.sh > results.txt 

Để làm điều đó trong một dòng:

ssh [email protected] 'cat > script.sh; chmod 755 script.sh; sudo ./script.sh' <script.sh> results.txt 

Tuy nhiên, điều này sẽ không hoạt động nếu bạn cần phải nhập mật khẩu vào sudo. Tất cả các tiêu chuẩn của ssh sẽ được đặt trong tập lệnh. Có thể có một cách để làm điều này bằng cách sử dụng Expect, nhưng tôi không có nhiều chuyên môn ở đó.

+0

Cảm ơn bạn đã trả lời nhanh chóng! Các khóa ssh không được lưu trữ vì vậy tôi sẽ cần phải nhập một 14 char pswd cả khi scp'ing và ssh'ing. Có cách nào để một dòng không? –

+0

Tôi sẽ không cần nhập mật khẩu cho sudo (chạy tập lệnh). Điều này có vẻ như nó sẽ làm việc tuyệt vời! Ngoài ra, Cảm ơn rất nhiều vì đã dành thời gian và giúp đỡ bạn !! –

+0

Nó không phải là một phản ứng chính xác cho câu hỏi, đó là về việc chạy một lệnh từ xa, không đẩy đến máy từ xa! – Rafareino

12

nếu bạn có sudo, VÀ phép sudo để root, sau đó làm việc này với cú pháp một chút ít:

ssh -T [email protected] 'sudo su -' < script.sh

+5

+1 Đây phải là câu trả lời được chấp nhận. –

Các vấn đề liên quan