pussh - समानांतर SSH कमांड चलाने का टूल
(github.com/bearstech)- Parallel SSH सेशन्स के ज़रिए कई सर्वरों पर एक साथ कमांड चलाने के लिए CLI टूल
- आसान उपयोग से लेकर उन्नत input/output control तक सपोर्ट करता है, और server cluster management के लिए उपयोगी है
बुनियादी सुविधाएँ
- कई hosts पर कमांड चलाता है, और output में host name को prefix के रूप में दिखाता है
- उदाहरण:
pussh -h host1,host2 uname -a
- उदाहरण:
- host list को फ़ाइल या standard input से दिया जा सकता है
- उदाहरण:
pussh -f servers uname -aयाfetch-servers | pussh -f - uname -a
- उदाहरण:
- output को pipeline से जोड़कर sort या filter किया जा सकता है
- उदाहरण: disk usage के आधार पर sort करना →
pussh -f servers df -h / | grep /dev | sort -rn -k5
- उदाहरण: disk usage के आधार पर sort करना →
- हर host का output अलग फ़ाइल में सेव किया जा सकता है (
%hhost name की जगह है)- उदाहरण:
pussh -f servers -o %h-hw.txt lshw
- उदाहरण:
- SSH output result को दूसरे कमांड में pipe किया जा सकता है
- उदाहरण:
pussh -f servers -o '|grep feature' command > output
- उदाहरण:
इनपुट नियंत्रण सुविधाएँ
- कमांड चलाते समय input को फ़ाइल या कमांड output से दिया जा सकता है
- उदाहरण:
pussh -f servers -i file command - उदाहरण: host-वार input फ़ाइल →
pussh -f servers -i %h.data command - उदाहरण: dynamic input →
pussh -f servers -i 'get-data %h|' command
- उदाहरण:
-iऔर-oको मनचाहे तरीके से साथ में इस्तेमाल किया जा सकता है
डिप्लॉयमेंट और रन सुविधाएँ
- कमांड या स्क्रिप्ट को remote पर भेजकर चलाया जा सकता है
- उदाहरण:
pussh -f servers -u my-deploy.sh args ... - लेकिन executable self-contained फ़ॉर्मेट में होना चाहिए या target server environment के साथ compatible होना चाहिए
- उदाहरण:
परफ़ॉर्मेंस optimization टिप्स
- SSH connection establish होने की speed पूरे execution time को बहुत प्रभावित करती है
- अगर SSH agent की processing speed limit पार हो जाए, तो authentication failure या connection error हो सकते हैं
- सिफारिश: rate सेट करके उपयोग करें (उदाहरण:
alias pussh='pussh -r 50') - network latency का बड़ा असर पड़ता है, इसलिए remote LAN machine में ssh login करने के बाद उसी मशीन से pussh चलाने पर ज़्यादा तेज़ हो सकता है
- उदाहरण benchmark (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
- उदाहरण benchmark (Gigabit LAN के आधार पर):
विकास और इतिहास
- 2008 से Bearstech के अंदर उपयोग में रहा टूल
- शुरुआत में यह कुछ लाइनों की shell script था, और अब 500 से ज़्यादा सर्वरों वाले cluster में भी स्थिर रूप से काम करता है
- cloud management system के साथ इंटीग्रेट होकर, साधारण host description से executable host list बनाता है
सीमाएँ
- remote server का stdout और stderr अलग नहीं रहता, बल्कि एक ही stream में मिलकर output होता है
- remote server पर चलाए गए कमांड का exit status नहीं लिया जा सकता
2 टिप्पणियां
नाम काफ़ी संदिग्ध है!
मैं इससे ज़्यादा सहमत नहीं हो सकता 🤣