Linux, PowerShell'in “bire çok” uzaktan kumandasına eşdeğerdir


38

Windows yönetiminden gelince, Linux'ta daha derin kazmak istiyorum (Debian). Yanan sorularımdan biri, web'de arama yapmayı cevaplayamadım (bulamadım): Windows için PowerShell'de olduğu gibi "birebir" denilen bir uzaktan kumandayı nasıl başarabilirim?

Temellerine ayırmak için şunu söyleyebilirim:

Linux hakkındaki görüşüm:

  • Bir sunucuya ssh yazıp komutumu yazabilirim
  • Sonuç aldım. 10 sunuculu bir ortam için her birine komut göndererek bir (perl / python?) Betiği yazmam gerekir mi?

Windows deneyimim:

  1. Komutumu yazdım ve "invoke-command" ile aynı anda yürütmek ve sonucu (daha fazla iş için bir nesne olarak) geri almak için bunu bir grup sunucuya (belki bir metin dosyasından) gönderebilirim.

  2. Birden fazla oturum bile kurabilirim, bağlantı arka planda tutulur ve bu oturumlara seçici bir şekilde komutlar gönderirim ve ihtiyacım olduğu gibi uzaktan ve dışarıya uzaktan kumanda gönderirim.

(Şef, kukla vb. Duydum. Böyle bir şey mi?)


Update 2019:
Çok denedikten sonra - Önerim Rex (bkz aşağıda Bu yorumu ) - Kolay kurulum (sadece biraz biliyorsanız ve kullanımını (etkili sadece ssh, başka bir şey gerekiyor) perl daha iyi, ama bu isteğe bağlı)
ile Rex (ify ) adhoc komutunu yapabilir ve gerçek bir yapılandırma yönetimine ilerletebilirsiniz (... yani: ilk sırada bir CM'dir, ancak adhoc görevler için de güzeldir) Web sitesi modası geçmiş, ancak şu anda (01/2019 itibariyle) aktif gelişim içinde ve IRC-Channel da aktif.

Windows'un yeni openssh ile daha da fazla olasılık var

deneyebilirsin: rex -u user -p password -H 192.168.1.3 -e 'say run "hostname"'



MobaXTerm, pek çok ssh oturumunda "çoklu yürütmeyi" destekler: mobaxterm.mobatek.net/features.html (aşağı kaydırma). Ayrıca, birincil iş istasyonu ortamınız Windows ise, Linux kutularına bağlanmak için çok hoş bir araçtır.
Kev

tmux ile: :setw synchronize-panes on( unix.stackexchange.com/a/124800/161003 )
eli

Yanıtlar:


50

özet

  • Ansible, PowerShell için güçlü bir yedek olan bir DevOps aracıdır
  • Grafik arayüzü olarak RunDeck kullanışlıdır
  • Bazı insanlar RunDeck + Ansible'ı birlikte çalıştırır

clusterssh

Uzaktan komutları birkaç sunucuya göndermek için, yeni başlayanlar için clusterssh ' ı tavsiye ederim.

clustersshDebian'da kurmak için:

apt-get install clusterssh

Başka bir clusterssh rehberi :

ClusterSSH, XTerm ve SSH gibi standart Linux araçları etrafındaki bir Tk / Perl sargısıdır. Bu haliyle, kütüphanelerin bulunduğu hemen hemen tüm POSIX uyumlu işletim sistemlerinde çalışacak - Linux, Solaris ve Mac OS X'te çalıştırıyorum. Perl kütüphanelerini gerektirir Tk (Debian veya Ubuntu'da perl) ve X11 :: Protocol (Debian veya Ubuntu'da libx11-protokol-perl), xterm ve OpenSSH'ye ek olarak.

yanıtlayıcı '

Birden fazla sistem yönetimi için uzak bir çerçeveye gelince, Ansible Kukla'a çok ilginç bir alternatif. Daha yalın ve SSH üzerinde çalıştığı için özel uzaktan ajanlara ihtiyacı yok (ayrıca RedHat tarafından satın alındı)

Playbook'lar komut satırı seçeneklerinden daha ayrıntılı.

Ancak, Ansible'ı kullanmaya başlamak için basit bir kurulum yapmanız ve istemciler listesi metin dosyasını ayarlamanız gerekir.

Daha sonra, tüm sunucularda bir komut çalıştırmak, yapmak kadar basittir:

ansible all -m command -a "uptime"

Çıktı ayrıca kural / sunucu başına çok güzel bir şekilde biçimlendirilmiş ve ayrılmıştır ve arka planda çalışırken bir dosyaya yönlendirilebilir ve daha sonra danışılabilir.

Basit kurallarla başlayabilirsiniz ve Ansible kullanımı Linux'ta büyüdükçe daha ilginç hale gelir ve alt yapınız daha büyük hale gelir. Gibi PowerShell'den çok daha fazlasını yapacak.

Örnek olarak, yazdığım Linux sunucularını yükseltmek için çok basit bir Playbook:

---
- hosts: all
  become: yes
  gather_facts: False
  tasks:
   - name: updates a server
     apt: update_cache=yes
   - name: upgrade a server
     apt: upgrade=full

Ayrıca kolayca kapsamlı politikalar yazmanıza izin veren birçok modül tanımlanmıştır.

Modül İndeksi - Makul Belgeler

Ayrıca, topluluk tarafından halihazırda yapılmış olan makul politikaları aramak için ilginç bir resmi merkez / "sosyal" depo ağına sahiptir. Ansible Galaxy

Ansible da yaygın olarak kullanılıyor ve FreeRadius kurulumu için kendimden olan github'da birçok proje bulacaksınız .

Ansible ücretsiz bir açık kaynak çerçeve olmasına rağmen, lisanslı bir işlem olmasına rağmen ücretli bir web panel arayüzü, Ansible Tower'a sahiptir .

Günümüzde, RedHat tarafından satın alındıktan sonra, kule AWX olarak bilinen açık kaynak versiyonuna da sahiptir .

Bonus olarak, Ansible, bunun için hiç kullanmadığım halde, Windows sunucularını yönetme yeteneğine de sahip.

Ayrıca otomasyon anahtar teslimi çözümü olarak çok ilginç bir çözüm yapan ağ donanımlarını (yönlendiriciler, anahtarlar ve güvenlik duvarı) yönetme yeteneğine de sahiptir.

Ansible nasıl kurulur?

Rundeck

Yine, yanıtlayıcı 'olarak kullanılmak üzere daha kolay, ama o kadar güçlü bir uzak çerçeve için ben tavsiye edersiniz Rundeck .

Günlük görevlerinizin çoğunu otomatik hale getirebileceğiniz ve hatta sysops veya yardım masası çalışanlarına sulandırılmış görünümler verebileceğiniz çok güçlü bir çok kullanıcılı / oturum açma grafik arayüzüdür.

Komutları çalıştırırken, aynı zamanda çıktısını sunucu / görev tarafından kesilen pencerelerle birlikte verir.

Arka planda birden fazla işi sorunsuz bir şekilde çalıştırabilir ve daha sonra raporu ve çıktıları görmenize olanak sağlar.

rundeck görüntü

RunDeck nasıl kurulur

Bir web arayüzü olarak Ansible + RunDeck'i çalıştıran insanlar olduğunu lütfen unutmayın; tüm davalar bunun için uygun değildir.

Ayrıca, Ansible ve / veya RunDeck'i kullanmanın alt yapı dokümantasyonunun bir formu veya parçası olarak yorumlanabileceğini ve zaman içinde eylemlerin / tariflerin / Oyun Kitaplarının çoğaltılmasına ve iyileştirilmesine izin verdiğini söylemeye gerek kalmadan devam eder.

Son olarak, merkezi bir komut sunucusundan bahsederken, görev için yeni bir tane oluşturacağım. Aslında teknik terim bir atlama kutusudur. 'Atlama kutuları' doğru ayarladıysanız güvenliği artırır .


1
Ansible, sadece bir komutu birden fazla SSH sunucusuna yayınlayan bir komut dosyası veya yardımcı programa karşı mükemmel bir çözümdür. Ansible bunu yapar (ve bu amaç için Kukla veya Aşçı'dan daha iyi bir seçimdir), ancak hedefinize daha iyi bir şekilde ulaşma seçeneği sunar, örneğin sadece install komutunu göndermek yerine derhal bir şey yüklemek için yerleşik bir modül kullanma ve en iyisini umuyorum.
JBentley


12

Bir ana bilgisayar listesine bağlanan ve komutu tüm ana bilgisayarlarda paralel olarak yürüten bir SSH istemcisi olan pssh(veya parallel-ssh) öğesini de kullanabilirsiniz :

$ parallel-ssh -i -H "host1 host2" uname -a
[1] 11:37:12 [SUCCESS] host2
Linux host2 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[2] 11:37:12 [SUCCESS] host1
Linux host1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

11

Belki basit bir zsh (bash) işlevi ile hedefinize ulaşabilirsiniz. Diyelim ki sunucularınız l61 l62 l63 ve sık sık bunlarla ilgili bir komut çalıştırmanız gerekiyor:

function run_on_cluster()
{
    (for srv in l61 l62 l63;
    do
        echo "ssh $srv $1";
    done) | parallel --gnu
}

Yani, komut satırında:

$ run_on_cluster "uname -r"
2.6.32-279.el6.x86_64
2.6.32-279.el6.x86_64
2.6.32-504.23.4.el6.x86_64

5
Sunucuların adını çıktılarından önce yazdırmanızı tavsiye ederim. Komut dosyasını paralel olarak çalıştırmak, betiğin çıktısını karıştırmak gibi başka tuhaflıklar da getirir - çıktının etkinliğini korumak için ek önlemler alınması gerekir. Her görevi ön planda yürütmek aynı zamanda minimum giriş etkileşimi imkanı da sunar.
Rui F Ribeiro

3

KDE kullanıyorsanız, işte başka bir yöntem.
- Bir Konsole penceresi açın.
İletişim kurmak istediğiniz her sunucu için:
- bir sekme açın
- sunucu ile ssh bağlantısı kurun
"Düzenle" menüsünde "tüm sekmeler" için "girişi kopyala" yı seçin

Bu sekmeye girdiğiniz her komut tüm sunuculara kopyalanacaktır.
Farklı sonuçlara bakmak için sekmeden sekmesine geçebilirsiniz.

Not: KDE'nin ingilizce sürümünü kullanmadığımdan menü etiketlerim (tırnak işaretleri içinde) yanlış olabilir.


1

GNU paralel

Kaydedilmiş ayarlara sahip basit tek gömleklere izin verir, böylece bir sunucu listesi ve genel anahtarlar içerecek şekilde "prod" adlı bir profil oluşturabilirsiniz. Sonra istediğiniz komutu ekleyebilir ve hazırsınız. sunucu ve sonunda otomatik olarak onları silmek ve daha büyük komut dosyaları için oldukça uygun.Ayrıca çok hızlı.

Tek sorun, çok fazla seçeneğe sahip olmasıdır;) Ancak belgeler aynı zamanda pek çok örnek içerir, böylece başlangıçta onlara bakabilirsiniz.


2
Merhaba, Linux ve Linux'a hoş geldiniz. Birisi zaten gnu-paralel kullanarak bir senaryo verdi bir örnek var. Etrafınıza bir göz atmanızı, daha ayrıntılı cevapların alınmasını ve size daha fazla puan vermenizi öneririm.
Rui F Ribeiro

1
@RuiFRibeiro üzgünüm, fark etmedim, SO android uygulaması kod kutuları ile hata ve içeriğin çoğunu göremedim (bu boşluk beyaz üretir). Gnu-paralelden bahsettiğin çıktısız çıktı - sırayla yazabilirsin ama yapmasını söylemelisin :)
alkuzad

Evet, aşina değilim, ama çoktan şüpheleniyorum, bu nedenle cevabın iyileştirilmesi gerekiyor. Teşekkürler. Hiçbir şey etrafına daha iyi bir cevap yazmanı engellemez, ancak yorum yapmak için bu cevaba yorum yazmanızı öneririm.
Rui F Ribeiro

1

Ben de burada "Rex" den bahsetmek istiyorum: https://www.rexify.org/

Perl + ssh (kullanıcı / parola veya anahtar kimlik doğrulaması) kullanan ve perl her (?!) Linux sistemde yüklü olduğu için kullanması daha doğal gözüktüğü için (Ansible & Co. ile bazı benzerlikleri var) düşünüyorum.

adhoc komutlarını aynı anda birden fazla sunucuda çalıştırabilirsiniz (server1, server2, server ... - kimlik doğrulama ayarlandıktan sonra veya alternatif olarak komutun sudo çalışması için -p / -u parametrelerini ve -s / -S komutlarını kullanın):

$ rex -H "server[1..3]" -e 'say run "uptime"'

veya farklı "görevler" belirttiğiniz bir dosyayı oluşturun ve oradan çağırın

$ rex -f myConfigFile.rex uptime

Depolar aracılığıyla veya perls cpan (veya cpanm Rex) ile kurulabilir ve ilk kurulumu kolaydır, bakınız:
- https://www.rexify.org/ veya
- https://www.rexify.org/docs/guides/ start_using__r__ex.html ve
- http://www.admin-magazine.com/Archive/2014/21/First-steps-in-IT-automation-by-Rex

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.