Thực thi tập lệnh Shell trên nhiều máy chủ


5

Có thể chạy một phần của tập lệnh ksh / sh trên một máy chủ sau đó ssh sang máy chủ khác và tiếp tục với phần còn lại của tập lệnh không? Hoặc có một công việc xung quanh?

Tôi có một người dùng mà tôi không phải xác thực mỗi khi tôi truy cập máy chủ, vì vậy tôi có thể nhảy từ máy chủ này sang máy chủ khác mà không cần bất kỳ tương tác bàn phím nào.

Tôi đã thử điều này, cố gắng tách một số logic thành một kịch bản khác sau đó:

MYSCRIPT="nohup ksh myscript.ksh > mylog.log &"
ssh servername ${MYSCRIPT}

Tôi đã thử điều này nhưng dường như nó không thực thi tập lệnh này trên một máy chủ khác.

Toàn bộ mã ở trên là một phần của forvòng lặp; Tôi thực hiện cùng một kịch bản cho một danh sách các máy chủ.

Đối với mục đích thử nghiệm, danh sách có hai máy chủ; Đối với một số lý do kỳ lạ và xoắn, chỉ có kịch bản máy chủ cuối cùng (hoặc thứ hai) hoạt động như tôi mong đợi.

Tất cả các máy chủ có thể thấy myscript.ksh - nó có thể nhìn thấy và thực thi được với tất cả chúng.


2
Có lẽ gửi thêm một chút mã. Ví dụ thử nghiệm của tôi trông giống như mã của bạn dường như hoạt động tốt.
Steven D

Myscript.ksh ở đâu? Trừ khi đó là trong thư mục chính của bạn, bạn nên chạy myscript.ksh, không ksh myscript.ksh.
Mikel

Nếu định tuyến / fw của bạn cho phép, tôi muốn đề nghị bạn phối hợp truy cập máy chủ từ xa từ một máy chủ trung tâm mà không phải nhảy xung quanh (ít nhất, đó là cách tôi tìm nạp các bản sao lưu của mình).
wag

Câu trả lời:


3

Có vẻ như bạn muốn chạy một chuỗi lệnh trên máy chủ khác mà không phải đăng nhập nhiều lần. Để thực hiện điều này, bạn có thể làm:

local_command sequence
ssh remote-server << End-Of-File
        remote_command 1
        remote_command 2
        remote_command 3
End-Of-File

Điều này sẽ chạy remote_command 1và khi nó kết thúc, chạy remote_command 2, sau đó remote_command 3tất cả trên máy chủ từ xa


Tôi thích cách tiếp cận này, bạn có thể vui lòng cho một ví dụ hoặc trang nam không, tôi nghĩ đây là điều tôi muốn .. Tôi muốn thực thi toàn bộ tập lệnh nhiều dòng trên nhiều máy chủ
c0mrade

Gotcha
c0mrade

1

Thành thật mà nói, từ ngữ của bạn hơi mơ hồ nhưng hãy theo dõi các nguyên nhân có thể:

Những gì bạn mô tả chỉ hoạt động tốt, nhưng hãy xem ssh-copy-idnguồn để tìm sự khác biệt với tập lệnh của riêng bạn (đó là tập lệnh shell được đóng gói với OpenSSH).

Bạn đã đề cập rằng lệnh không hoạt động trên một trong các máy của bạn, có thể máy chủ có một thiết lập khác ngăn tập lệnh bắt đầu ở vị trí đầu tiên.

Ngoài ra, bạn đã đề cập đến xác thực, vì vậy tôi cho rằng bạn đang sử dụng xác thực khóa công khai không mật khẩu và bạn có thể muốn hạn chế các lệnh được ủy quyền với khóa được liên kết: xem man ssh, phần AUTHORIZED_KEYS FILE FORMAT.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.