pussh - Alat eksekusi perintah SSH paralel
(github.com/bearstech)- Alat CLI yang memungkinkan eksekusi perintah secara serentak di banyak server melalui sesi SSH paralel
- Mendukung mulai dari penggunaan sederhana hingga kontrol input/output lanjutan, dan berguna untuk mengelola klaster server
Fitur dasar
- Menjalankan perintah di beberapa host sekaligus, dengan nama host ditampilkan sebagai prefiks output
- Contoh:
pussh -h host1,host2 uname -a
- Contoh:
- Daftar host dapat diberikan dari file atau input standar
- Contoh:
pussh -f servers uname -aataufetch-servers | pussh -f - uname -a
- Contoh:
- Output dapat disambungkan ke pipeline untuk diurutkan atau difilter
- Contoh: urutkan berdasarkan penggunaan disk →
pussh -f servers df -h / | grep /dev | sort -rn -k5
- Contoh: urutkan berdasarkan penggunaan disk →
- Output tiap host dapat disimpan ke file terpisah (
%hadalah placeholder nama host)- Contoh:
pussh -f servers -o %h-hw.txt lshw
- Contoh:
- Hasil output SSH dapat diproses melalui pipe ke perintah lain
- Contoh:
pussh -f servers -o '|grep feature' command > output
- Contoh:
Fitur kontrol input
- Saat menjalankan perintah, input dapat diberikan dari file atau output perintah
- Contoh:
pussh -f servers -i file command - Contoh: file input per host →
pussh -f servers -i %h.data command - Contoh: input dinamis →
pussh -f servers -i 'get-data %h|' command
- Contoh:
-idan-odapat dikombinasikan secara bebas
Fitur deployment dan eksekusi
- Perintah atau skrip dapat dikirim dan dijalankan dari jarak jauh
- Contoh:
pussh -f servers -u my-deploy.sh args ... - Namun, file eksekusi harus dalam format self-contained atau kompatibel dengan lingkungan server target
- Contoh:
Tips optimasi performa
- Kecepatan pembentukan koneksi SSH sangat memengaruhi total waktu eksekusi
- Jika melampaui batas kecepatan pemrosesan SSH agent, autentikasi bisa gagal atau terjadi error koneksi
- Rekomendasi: gunakan dengan menetapkan rate eksekusi (misalnya
alias pussh='pussh -r 50') - Karena latensi jaringan sangat berpengaruh, lebih cepat jika login via ssh ke mesin LAN jarak jauh lalu menjalankan pussh dari mesin tersebut
- Contoh benchmark (berdasarkan 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
- Contoh benchmark (berdasarkan Gigabit LAN):
Pengembangan dan riwayat
- Alat yang telah digunakan secara internal di Bearstech sejak 2008
- Awalnya hanya beberapa baris skrip shell, dan kini berjalan stabil bahkan pada klaster dengan lebih dari 500 server
- Terintegrasi dengan sistem manajemen cloud untuk menghasilkan daftar host yang bisa dieksekusi dari deskripsi host yang sederhana
Keterbatasan
- stdout dan stderr dari server jarak jauh tidak dipisahkan, melainkan digabung dan ditampilkan sebagai satu stream
- Tidak dapat mengambil status keluar (exit status) dari perintah yang dijalankan di server jarak jauh
2 komentar
Namanya mencurigakan!
Saya sangat setuju 🤣