- 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
- 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 -a hoặc fetch-servers | pussh -f - uname -a
- 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
- Có thể lưu đầu ra của từng host vào các tệp riêng biệt (
%h là vị trí tên host)
- Ví dụ:
pussh -f servers -o %h-hw.txt lshw
- 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
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
-i và -o có 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
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
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 🤣