pussh - Công cụ thực thi lệnh SSH song song
(github.com/bearstech)- Công cụ CLI cho phép thực thi lệnh đồng thời trên nhiều máy chủ thông qua các phiên SSH song song
- Hỗ trợ từ cách dùng đơn giản đến kiểm soát đầu vào/đầu ra nâng cao, hữu ích cho quản lý cụm máy chủ
Tính năng cơ bản
- Thực thi lệnh trên nhiều host và in kết quả với tên host làm tiền tố
- Ví dụ:
pussh -h host1,host2 uname -a
- Ví dụ:
- Danh sách host có thể được cung cấp từ tệp hoặc đầu vào tiêu chuẩn
- Ví dụ:
pussh -f servers uname -ahoặcfetch-servers | pussh -f - uname -a
- Ví dụ:
- Có thể nối đầu ra vào pipeline để sắp xếp hoặc lọc
- Ví dụ: sắp xếp theo mức sử dụng đĩa →
pussh -f servers df -h / | grep /dev | sort -rn -k5
- Ví dụ: sắp xếp theo mức sử dụng đĩa →
- Có thể lưu đầu ra của từng host vào các tệp riêng biệt (
%hlà vị trí tên host)- Ví dụ:
pussh -f servers -o %h-hw.txt lshw
- Ví dụ:
- Có thể xử lý đầu ra SSH bằng pipe sang lệnh khác
- Ví dụ:
pussh -f servers -o '|grep feature' command > output
- Ví dụ:
Tính năng kiểm soát đầu vào
- Khi thực thi lệnh, có thể cung cấp đầu vào từ tệp hoặc từ đầu ra của lệnh khác
- Ví dụ:
pussh -f servers -i file command - Ví dụ: tệp đầu vào theo từng host →
pussh -f servers -i %h.data command - Ví dụ: đầu vào động →
pussh -f servers -i 'get-data %h|' command
- Ví dụ:
-ivà-ocó thể được kết hợp tự do
Tính năng triển khai và thực thi
- Có thể truyền và thực thi lệnh hoặc script từ xa
- Ví dụ:
pussh -f servers -u my-deploy.sh args ... - Tuy nhiên, tệp thực thi phải ở định dạng self-contained hoặc tương thích với môi trường của máy chủ đích
- Ví dụ:
Mẹo tối ưu hiệu năng
- Tốc độ thiết lập kết nối SSH ảnh hưởng lớn đến tổng thời gian thực thi
- Nếu vượt quá giới hạn tốc độ xử lý của SSH agent, có thể xảy ra lỗi xác thực hoặc lỗi kết nối
- Khuyến nghị: đặt tốc độ thực thi (rate) khi sử dụng (ví dụ:
alias pussh='pussh -r 50') - Độ trễ mạng có ảnh hưởng lớn, vì vậy nếu đăng nhập ssh vào một máy trong LAN từ xa rồi chạy pussh trên máy đó thì sẽ nhanh hơn
- Ví dụ benchmark (theo chuẩn Gigabit LAN):
$ time pussh -f servers -r 100 date Total: 201 host(s), 4 second(s) real 0m4.069s user 0m7.132s sys 0m3.140s
- Ví dụ benchmark (theo chuẩn Gigabit LAN):
Phát triển và lịch sử
- Công cụ đã được sử dụng nội bộ tại Bearstech từ năm 2008
- Ban đầu chỉ là vài dòng shell script, hiện nay vẫn hoạt động ổn định ngay cả trên các cụm hơn 500 máy chủ
- Tích hợp với hệ thống quản lý đám mây để tạo danh sách host có thể thực thi từ mô tả host đơn giản
Hạn chế
- stdout và stderr của máy chủ từ xa không được tách riêng mà được gộp thành một luồng duy nhất khi xuất ra
- Không thể lấy trạng thái thoát (exit status) của lệnh được thực thi trên máy chủ từ xa
2 bình luận
Cái tên nghe không trong sáng!
Tôi hoàn toàn đồng ý hơn nữa 🤣