लिनक्स - एक ही बार में कई मशीनों पर समान कमांड चलाना


39

मेरे पास लगभग एक दर्जन लिनक्स बॉक्स हैं जिन पर मुझे कभी-कभी एक ही कमांड चलाने की आवश्यकता होती है। वहाँ एक आसान तरीका है (या स्वचालित तरीका) यह करने के लिए प्रत्येक मशीन पर लॉगिंग से और एक समय में एक, कमांड चल रहा है? यह हर समय एक ही कमांड नहीं है और यह एक पूर्व निर्धारित समय पर नहीं है, इसलिए यह उपकरण जैसे कुछ के लिए आदर्श नहीं है cron


इसी तरह के प्रश्न serverfault.com/questions/17931/…
hayalci

अंत में विहित सूची :)
रॉगरडैक

जवाबों:


12

हम्म, शायद pconsole उपकरण आप चाहते हैं।


वाह, pconsole बहुत अच्छा लग रहा है! मैंने इसे स्थापित किया कोई समस्या नहीं है और यह अब तक बहुत अच्छा लग रहा है। धन्यवाद!
क्रिस बंच

यह मेरे पसंदीदा उपकरणों में से एक है। :) एनपी
नोड


8

आपको इसकी जाँच करनी चाहिए कि यहाँ कठपुतली अपने सेटअप और उपयोग पर एक linux.com लेख है


1
हम्म, कठपुतली काफी दिलचस्प लगती है। मैं इस पर एक नज़र डालूँगा अगर pconsole मुझे विफल करने लगे, क्योंकि मेरे पास पहले से ही यह चल रहा है और पपेट की भाषा सीखने की तुलना में यह आसान है। फिर भी सुझाव के लिए धन्यवाद!
क्रिस बंच

विशेष रूप से, मैरियनेट कलेक्टिव टूल (जिसे mcollective, या mco भी कहा जाता है)। यह कठपुतली का एक हिस्सा है जो आपको कठपुतली तथ्यों के आधार पर मेजबानों के समूह पर काम करने देता है।
ब्रायन मिंटन


8

आप कैपिस्ट्रानो की कोशिश कर सकते हैं । मूल रूप से यह एक रेल परिनियोजन उपकरण है, लेकिन यह दूरस्थ मशीनों के साथ कई काम करने के लिए विकसित हुआ।

कई मशीन के प्रशासन के लिए एक अधिक पूर्ण aproach के लिए आप बावर्ची की कोशिश करना चाहते हो सकता है ।


8

Ansible के पास तदर्थ आदेशों को करने की क्षमता है और यह पूर्ण विन्यास प्रबंधन करने के लिए विस्तार योग्य भी है। समूहों के आधार पर मिलान करने की क्षमता उत्कृष्ट है।

http://docs.ansible.com/intro_adhoc.html


ansibleएक बार में सैकड़ों मशीनों के साथ अच्छी तरह से काम करता है या आप इसे एक समय में n मशीनों
चूजों को

6

मुझे लगता है कि मैं अपने जवाब को स्टैक ओवरफ्लो से कॉपी और पेस्ट करूंगा , जो लोगों को पसंद आ रहा था। । ।


कई सर्वरों पर कमांड चलाने का मुद्दा एक बार दूसरे दिन एक पर्ल मेलिंग सूची में आया और मैंने वही सिफारिश दी जो मैंने वहां दी थी , जो कि gsh का उपयोग करना है: http://outflux.net/unix/ सॉफ्टवेयर / GSH

gsh for box in box1_name box2_name box3_nameपहले से दिए गए " " समाधान के समान है लेकिन मुझे लगता है कि gsh अधिक सुविधाजनक है। आप वेब / db, RHEL4, x86_64, या जो भी (आदमी भूत) जैसे समूहों में अपने सर्वर युक्त / etc / ghosts फ़ाइल सेट करते हैं, जब आप gsh कहते हैं तो आप उस समूह का उपयोग करते हैं।

[pdurbin@beamish ~]$ gsh web "cat /etc/redhat-release; uname -r"
www-2.foo.com: Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
www-2.foo.com: 2.6.9-78.0.1.ELsmp
www-3.foo.com: Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
www-3.foo.com: 2.6.9-78.0.1.ELsmp
www-4.foo.com: Red Hat Enterprise Linux Server release 5.2 (Tikanga)
www-4.foo.com: 2.6.18-92.1.13.el5
www-5.foo.com: Red Hat Enterprise Linux Server release 5.2 (Tikanga)
www-5.foo.com: 2.6.18-92.1.13.el5
[pdurbin@beamish ~]$

उदाहरण के लिए, आप वेब + db या वेब-RHEL4 का उपयोग करके भूत समूहों को जोड़ या विभाजित भी कर सकते हैं।

मैं यह भी उल्लेख करूँगा कि जब मैंने कभी भी शमक्स का उपयोग नहीं किया है, तो इसकी वेबसाइट में सॉफ्टवेयर की सूची (gsh सहित) है जो आपको एक साथ कई सर्वरों पर कमांड चलाने की सुविधा देती है। कैपिस्ट्रानो का पहले ही उल्लेख किया जा चुका है और (मैं जो भी समझता हूं) उस सूची में भी हो सकता है।


5

यदि आप KDE डेस्कटॉप पर हैं, तो konsole में "सभी सत्रों के लिए इनपुट भेजें" विकल्प है। यह एक ही konsole विंडो में खोले गए सभी सत्रों पर लागू होता है।


5

आप ssh [user@]hostname [command]होस्ट नामों के माध्यम से भी कोशिश कर सकते हैं ।


2
यह वास्तव में "एक बार" भाग को संतुष्ट नहीं करता है (यह क्रमबद्ध है, समानांतर में नहीं), लेकिन जैसा कि प्रश्न के शरीर से एक आवश्यकता नहीं लगती है यह एक सभ्य समाधान भी हो सकता है।
voretaq7

4

फंक पर भी नज़र डालें। फंक आपको किसी सिस्टम के विभिन्न पहलुओं को नियंत्रित करने के लिए, पैकेज से निपटने से लेकर रनिंग कमांड आदि तक एक मॉड्यूल आर्किटेक्चर का उपयोग करने देता है। यह एसएसएल पर क्लाइंट / सर्वर मॉड्यूल पर काम करता है और इसके साथ ही काफी लचीला प्रमाणीकरण योजना भी है।


इसके साथ ही, Red Hat द्वारा Func का निर्माण किया जा रहा है, और भविष्य में Fedora / RHEL उत्पादों में विस्तारित उपयोग देखने की संभावना है। यह निश्चित रूप से देखने के लिए एक है, क्योंकि मुझे उम्मीद है कि यह इस प्रकार की समस्या के लिए वास्तविक मानक समाधान बन जाएगा।
क्रिस्टोफर कैशेल

4

मैंने क्लस्टरस्टरएच का उपयोग किया है और यह काम करता है। हालांकि, टर्मिनलों की एक निश्चित संख्या से परे, यह अच्छी तरह से पैमाने पर नहीं है।

मुझे आश्चर्य है कि किसी ने भी xargs का उल्लेख नहीं किया है। Xargs ज्यादातर चीजों के लिए एकदम सही है। वास्तव में, मैं इसके साथ इतना सहज हो गया हूं कि मैं कभी भी क्लस्टर्स का उपयोग नहीं करता हूं।

उदाहरण

echo -n host1 host2 host3 host4|xargs -d" " -n1 -P30 -I+ ssh + "sudo service apache2 restart"

(सभी वेब होस्ट्स पर अपाचे को पुनरारंभ करें।)


अनुयायियों के लिए, इस -P30भाग का अर्थ है "समानांतर में उनमें से 30 को चलाएं"
रोगरडपैक 18

4

यदि आप पहले से ही tmux उपयोगकर्ता हैं, तो आप tmux-cssh (स्टैंड फॉर TMUX-C(luster)-SSH) का आनंद ले सकते हैं । आप इसे सर्वर नामों की एक सूची देते हैं और यह एक नया tmux विंडो खोलता है जिसमें SSH सत्र होता है जो अपने स्वयं के फलक में प्रत्येक सर्वर के लिए खुला होता है। सभी कीस्ट्रोक्स प्रत्येक विंडो में कॉपी किए जाते हैं। मेजबानों की संख्या के आधार पर आउटपुट को पढ़ना मुश्किल हो सकता है।


1
एक लाइनर लिंक जरूरी उपयोगी नहीं हैं। कृपया वर्णनात्मक हो। आप इस उपकरण की सलाह क्यों देते हैं?
हिरण हंटर

3

अन्य उपकरण हैं:

RunDeck को लाइटवेट कंट्रोलटियर के रूप में भी वर्णित किया जा सकता है।

ये उपकरण न केवल आपको एक क्लस्टर शेल देते हैं, बल्कि एक वेब फ्रंटेंड भी हैं और आप भविष्य में उपयोग के लिए अपनी नौकरियों को बचा सकते हैं।


2

आप क्लस्टर SSH (cssh) को भी आज़मा सकते हैं। मैंने इसका उपयोग नहीं किया है, लेकिन LinuxJournal.com पर एक लेख है, जिसके बारे में बात करते हुए "कई नौकरों को कुशलता से प्रबंधित करें" कहा जाता है।


1

पकवान , सरल और बहुत शक्तिशाली का उपयोग करें ! इस लिपि ने मेरा जीवन बदल दिया :) उन सभी पर शासन करने के लिए एक लिपि!

http://nic-nac-project.org/~drimiks/gnu/dish.shtml

परिश्रम शेल 'डिश' कई सिस्टम पर एक साथ ssh / rsh / telnet / mysql के माध्यम से कमांड निष्पादित करता है। पासवर्ड बदलना, कॉन्फ़िगरेशन को अपडेट करना, फाइलों को कॉपी करना, सैकड़ों नोड्स पर स्थिति की जांच करना, आदि को सरल बनाया गया है। डिश आईबीएम के 'डीश' (वितरित शेल) के समान है, लेकिन इसके अलावा प्रमाणीकरण की आवश्यकता वाले कमांड के दूरस्थ निष्पादन की अनुमति देता है। अन्य ओपन सोर्स पैकेज की तुलना में, जिसमें क्लस्टरस्टर, डांसर शेल, समानांतर वितरित शेल, या सी 3 जैसे वितरित शेल (या समान उपकरण) शामिल हैं, डिश एक पतला और आसान है, जिसमें उन मामलों के लिए रिमोट-शेल रैपर का उपयोग किया जा सकता है जहां एक लचीला समाधान की आवश्यकता होती है। आप यहां डिश के मैनुअल पेज को ऑनलाइन ब्राउज़ कर सकते हैं।


1

अन्य उत्तरों में उल्लिखित आदेशों का उपयोग करने के कुछ उदाहरण इस प्रकार हैं:

pdsh

संख्यात्मक रेंज ले सकते हैं, पहले मेजबान नाम के साथ आउटपुट, वास्तव में बनाए रखा लगता है :

सबसे सरल संस्करण:

pdsh -w hostname echo done

उत्पादन:

hostname: done

अधिक जटिल उदाहरण:

pdsh -w username@hostname[7-8],username@otherhost "sleep 5 && echo done"

उत्पादन:

hostname8: done
hostname7: done
otherhost: done

मैक: brew install pdsh

DSH

dsh -m user@host,user@host --remoteshell ssh --concurrent-shell -- "sleep 5 && echo done"

दूरस्थ शेल सेटिंग की आवश्यकता है अन्यथा यह "rsh" का उपयोग करेगा जो उपलब्ध भी हो सकता है या नहीं भी।

मैक: brew install dsh

pssh

pssh -i -H user@host -H user@host "sleep 5 && echo done"

वे सभी वैकल्पिक रूप से, एक फ़ाइल से मशीनों की सूची ले सकते हैं।

यहां अधिक उदाहरण जोड़ने के लिए स्वतंत्र महसूस करें, यह एक कॉम्युनिटी विकी है

मैक: brew install pssh

क्लस्टर एसएसएच

क्लस्टर SSH ("मैक केवल संस्करण" जाहिरा तौर पर दो संस्करण हैं जो अन्य यहाँ है ) वास्तव में "असली टर्मिनलों" को उस तल पर एक बड़े टर्मिनल के साथ खोलता है जो अन्य सभी को इनपुट भेजता है। तो यह एक यूआई की तरह है जो इसे कई में भेजता है।

उदाहरण के लिए:

csshX hostname0[1-2] hostname3 फिर लाल बॉक्स में टाइप करें और यह प्रत्येक टर्मिनल विंडो पर जाता है, प्रति मेजबान, कि यह पॉप अप होता है।

मैक: brew install csshx(एक पुराना संस्करण लेकिन अभी भी काम करता है)

एक brew install ansibleFWIW भी है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.