5 điểm bởi xguru 2025-04-22 | 2 bình luận | Chia sẻ qua WhatsApp
  • 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-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
    • 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  
      

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

 
ahwjdekf 2025-04-24

Cái tên nghe không trong sáng!

 
nemorize 2025-04-25

Tôi hoàn toàn đồng ý hơn nữa 🤣