Linux - Aynı Komutu Aynı Anda Birçok Makinede Çalıştırmak


39

Aynı komutları çalıştırmak için ara sıra ihtiyaç duyduğum bir düzine Linux kutum var. Bunu yapmanın daha kolay bir yolu (veya otomatik bir yolu) var mı, her bir makinede oturum açıp aynı anda komutu çalıştırmaktan vazgeçmek mi? Her zaman aynı komutlar değildir ve önceden belirlenmiş bir zamanda değildir, bu nedenle araçlar için ideal bir şey değildir cron.



Sonunda kanonik liste :)
rogerdpack

Yanıtlar:


12

Hm, belki direk istediğiniz araç.


Vay be, konsol çok hoş görünüyor! Hiçbir sorun kurdum ve şimdiye kadar harika görünüyor. Teşekkürler!
Chris Bunch

Benim de en sevdiğim aletlerden biri. :) np
Düğüm


8

Puppet'i kontrol etmelisiniz, burada kurulum ve kullanımı hakkında bir linux.com makalesi var .


1
Hmm, Kukla çok ilginç görünüyor. Pconsole beni kırmaya başlarsa, onu çalıştırmaya başladığımdan ve kukla dilini öğrenmekten daha kolay olduğundan bir göz atacağım. Öneriniz için teşekkürler!
Chris Bunch

Özellikle, Marionette Collective aracı (mcollective veya mco olarak da bilinir). Kukla gerçeklerine dayanarak, bir grup ev sahibi üzerinde bir şeyler yapmanıza izin veren kuklanın bir parçası.
Brian Minton


8

Capistrano'yu deneyebilirsiniz . Başlangıçta bir Rails dağıtım aracıdır, ancak uzak makinelerle birçok şey yaptı.

Birden makinenin yönetimine daha eksiksiz tür yaklaşıma denemek isteyebilirsiniz şef .



6

Sanırım cevabımı , insanların hoşlandığı görünen Stack Overflow'tan kopyalayıp yapıştıracağım . . .


Aynı anda birçok sunucuda komut çalıştırma sorunu, bir önceki gün Perl posta listesine geldi ve orada verdiğim tavsiyeyi vereceğim , ki gsh kullanmak için: http://outflux.net/unix/ yazılım / gsh

gsh, for box in box1_name box2_name box3_namedaha önce verilen " " çözümüne benziyor ancak gsh’in daha kullanışlı olduğunu düşünüyorum. Sunucularınızı web, db, RHEL4, x86_64 gibi gruplar halinde içeren bir / etc / ghosts dosyası kurar ve sonra gsh dediğiniz zaman bu grubu kullanırsınız.

[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 ~]$

Ayrıca örneğin web + db veya web-RHEL4 kullanarak hayalet grupları birleştirebilir veya bölebilirsiniz.

Ayrıca, shmux'u hiç kullanmadığım halde , web sitesinde aynı anda birçok sunucuda komut çalıştırmanıza izin veren bir yazılım listesi (gsh dahil) içerdiğinden bahsedeceğim. Capistrano çoktan bahsedildi ve (anladığım kadarıyla) bu listede de olabilir.


5

KDE masaüstündeyseniz, konsole "Tüm oturumlara girişi gönder" seçeneğine sahiptir. Aynı konsole penceresinde açılan tüm seanslar için geçerlidir.


5

Ayrıca ssh [user@]hostname [command]ana bilgisayar adları arasında dolaşıp deneyebilirsiniz .


2
Bu, "bir kerede" kısmını gerçekten tatmin etmiyor (paralelleştirilmemiştir, serileştirilmiştir), ancak bu, sorunun gövdesinin bir gereği gibi görünmüyorsa, bu da iyi bir çözüm olabilir.
voretaq7

4

Ayrıca func'a bir göz atın. Func, bir sistemin farklı yönlerini kontrol etmek için paketlerle uğraşmaktan, çalışan komutlara vb. Kadar bir modül mimarisi kullanmanıza izin verir. Bir istemci / sunucu modülünde SSL üzerinden çalışır ve aynı zamanda oldukça esnek bir kimlik doğrulama şemasına sahiptir.


Bununla birlikte, Func Red Hat tarafından inşa ediliyor ve gelecekteki Fedora / RHEL ürünlerinde genişletilmiş kullanım görmesi muhtemel. Bu kesinlikle izlenmesi gereken bir durum, bu tip bir problem için fiili standart bir çözüm olacağını umuyorum.
Christopher Cashell

4

ClusterSSH kullandım ve çalışıyor. Bununla birlikte, belirli sayıda terminalin ötesinde, iyi ölçeklenemez.

Hiç kimsenin Xargs'tan bahsetmediğine şaşırdım. Xargs çoğu şey için mükemmel. Aslında, o kadar rahat oldum ki artık hiç küme kullanmam.

Örnek

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

(Tüm web ana bilgisayarlarında apache'yi yeniden başlatın.)


takipçiler için, -P30parça "30'u paralel olarak koşmak" anlamına geliyor
rogerdpack

4

Zaten bir tmux kullanıcısıysanız, tmux-cssh'ın (standları TMUX-C(luster)-SSH) keyfini çıkarabilirsiniz . Sunucu adlarının bir listesini verirsiniz ve her bir sunucuya kendi bölmesinde açık olan bir SSH oturumu ile yeni bir tmux penceresi açar. Tüm tuş vuruşları her pencereye kopyalanır. Ana bilgisayar sayısına bağlı olarak, çıktının okunması zor olabilir.


1
Bir liner bağlantısı mutlaka faydalı değildir. Lütfen açıklayıcı ol. Bu aracı neden tavsiye edersiniz?
Deer Hunter

3

Diğer araçlar:

RunDeck ayrıca hafif ControlTier olarak tanımlanabilir.

Bu araçlar yalnızca bir küme kabuğu değil, aynı zamanda bir web ön yüzü sunar ve işlerinizi ileride kullanmak üzere saklayabilirsiniz.


2

Ayrıca Küme SSH'sini (cssh) de deneyebilirsiniz. Hiç kullanmadım, ancak LinuxJournal.com'da "Birden Çok Sunucuyu Verimli Yönet" adlı bir makale var.


1

Çanak , basit ve çok güçlü kullanın ! Bu senaryo hayatımı değiştirdi :) Hepsine hükmedecek bir senaryo!

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

Çalışkanlık kabuğu 'dish' komutları ssh / rsh / telnet / mysql aracılığıyla birkaç sistemde aynı anda gerçekleştirilir. Şifreyi değiştirmek, konfigürasyonu güncellemek, dosyaları kopyalamak, durumunu kontrol etmek, vb. Yüzlerce düğümde yapılır. Çanak, IBM'in 'dsh'sine (dağıtılmış kabuk) benzer, ancak ayrıca kimlik doğrulama gerektiren komutların uzaktan yürütülmesine izin verir. ClusterIt, dansçı kabuğu, paralel dağıtılmış kabuk veya C3 gibi dağıtılmış bir kabuk (veya benzeri araçlar) içeren diğer açık kaynaklı paketlerle karşılaştırıldığında, çanak, esnek bir çözelti gereken durumlarda ince ve kullanımı kolay bir uzaktan kabuk sarıcıdır. Çanak kullanım kılavuzuna buradan çevrimiçi göz atabilirsiniz.


1

Diğer cevaplarda belirtilen komutları kullanan bazı örnekler:

pdsh

Sayısal aralıkları alabilir, önce ana bilgisayar adı olan çıktılar, aslında korunmuş gibi görünür :

En basit sürüm:

pdsh -w hostname echo done

çıktı:

hostname: done

Daha karmaşık bir örnek:

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

çıktı:

hostname8: done
hostname7: done
otherhost: done

Mac: brew install pdsh

dsh

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

uzak kabuk ayarına ihtiyacınız varsa, aksi takdirde mevcut olan veya bulunmayan "rsh" yi kullanır.

Mac: brew install dsh

pssh

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

İsteğe bağlı olarak hepsi bir dosyadan makinelerin listesini alabilir.

Buraya daha fazla örnek eklemek için çekinmeyin, bu bir topluluk wiki

Mac: brew install pssh

Küme SSH

Küme SSH ("sadece mac sürümü", görünüşe göre diğerinin burada iki versiyonu var ) aslında "gerçek terminalleri" açıyor ve alt kısmında diğerlerine girdi gönderen büyük bir terminal var. Bu yüzden onu çoklu gönderen bir UI gibi.

Ör:

csshX hostname0[1-2] hostname3 daha sonra kırmızı kutuya yazın ve her terminal penceresine (ana bilgisayar başına bir tane açılır) açılır.

mac: brew install csshx(eski bir sürüm ama yine de çalışıyor)

ayrıca bir brew install ansibleFWIW var

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.