- 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
- हर host का output अलग फ़ाइल में सेव किया जा सकता है (
%h host 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 चलाने पर ज़्यादा तेज़ हो सकता है
विकास और इतिहास
- 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 टिप्पणियां
नाम काफ़ी संदिग्ध है!
मैं इससे ज़्यादा सहमत नहीं हो सकता 🤣