Eğer sizde benim gibi birden fazla Debian GNU/Linux çalıştırıyorsanız ve zaman zaman tüm bu makineler için bir veya birkaç komutu çalıştırmanız gerekiyordur. Tüm makineler üzerinde aynı komutu çalıştırmanın çeşitli yolları vardır, tüm makinelere bağlanıp elle çalıştırmak gibi, veya daha karmaşık çözümleri kullanmak gibi; CFEngine veya Puppet. Bunların arasında yazdığınız tek komutu tüm makinlerde çalıştırmak için pssh kullanabilirsiniz.
pssh paketi size bu çözümü sunun bir araçtır, SSH bağlantılarını birden fazla makinede paralel olarak kullanmanıza izin veririr.
Debian paket deposunu araştırdığınızda benzer birçok çözümü görebilirsiniz:
me@home:~$ apt-cache search cluster ssh clusterssh - administer multiple ssh or rsh shells simultaneously dish - the diligence/distributed shell for parallel sysadmin dsh - dancer's shell, or distributed shell kanif - cluster management and administration swiss army knife libtaktuk2 - C bindings for taktuk libtaktuk2-dev - C bindings for taktuk (development files) pssh - Parallel versions of SSH-based tools taktuk - efficient, large scale, parallel remote execution of commands
Öncelikle pssh paketini yükleyelim. Bu paket ile birlikte birkaç yeni komut gelir.
# apt-get install pssh
parallel-slurp
Bu komut birden fazla uzak makineden dosyaların yerel sisteminize kopyalamınızı sağlar. Kısaca bunun kullanımını aşağıda göstereceğim.
parallel-ssh
Bu komut yerel makinenizde yazmış olduğunuz komutun paralel olarak uzak sistemlerde çalışmasını sağlar. Bunu komutunda kullanımını aşağıda kısaca göstereceğim.
parallel-nuke
Bu komut birden fazla uzak sistemde işlemlern öldürülmesini sağlar.
parallel-scp
Bu komut parallel-slurp ‘un tersidir ve birden fazla uzak sisteme dosya, veya dosyalar, kopyalamayı sağlar.
Genel Kullanım
pssh paketi ile birlikte yüklenen herbir yeni komut bir text dosyasnda bulunan listedeki makine isimlerini okur. Bu otomatik kullanım biraz komut-satırı çözümleme işlemini kolaylaştırmak için yapılmıştır.
Birden fazla makine üzerinde konut çalıştırılması
En basit kullanım; herbir makine üzerinde basitçe çalıştırmak ve rapor çıktısı almamaktır. Örneğin hosts.txt ,dosyada verilen numara ve makine ismi vardır, dosyasını çalıştırmak:
me@home:~$ parallel-ssh -h hosts.txt uptime
[1] 18:29:35 [SUCCESS] gold.my.flat 22 [2] 18:29:35 [SUCCESS] silver.my.flat 22
Bu komut “uptime” komut çıktısını bizim istediğimiz gibi bize göstermez. İstediğimiz gibi bir çıktı almak için “-i” (inline) flag (bayrak) eklememiz gerekmektedir:
me@home:~$ parallel-ssh -i -h hosts.txt uptime
[1] 18:30:29 [SUCCESS] gold.my.flat 22 18:30:29 up 36 days, 5:21, 5 users, load average: 0.39, 0.24, 0.23 [2] 18:30:29 [SUCCESS] silver.my.flat 22 18:30:29 up 36 days, 4:45, 1 user, load average: 0.04, 0.02, 0.00
En basit komutlar için bu iyi bir çözümdür fakat bazı zaman mümkün olan tüm çıktıları toplamak istediğiniz zaman bu yeterli olmaz. Burada çıktı (output) parametresini de kullanmanız gerkmektedir. Basitçe çıktı (output) ” -o path” dir. Herbir sistem için çıktılar aşağıdaki şekilde dosyaya yazılır.
me@home:~$ parallel-ssh -o uptime.out -h hosts.txt uptime
[1] 18:32:30 [SUCCESS] gold.my.flat 22 [2] 18:32:30 [SUCCESS] silver.my.flat 22 me@home:~$ ls uptime.output/ gold.my.flat silver.my.flat me@home:~$ cat uptime.out/silver.my.flat 18:32:30 up 36 days, 4:47, 1 user, load average: 0.00, 0.01, 0.00
Burada sizin kullanbileceğiniz birçok seçenek vardır. örneğin bağlanılan kullanıcı adları ve farklı port numaraları kullanımı gibi. Seçenekleri görmek için parallel-ssh komutunu hiçbir parametre olmadan kullanmanız yeterlidir.
Birden fazla makineden dosya kopyalanması
Kopyalanan dosyaların çalışması gösterdiğimiz komutların çalışması gibidir. Sadece farkı yerel dizini özellikle belirtmenizdir, böylelikle uzak sistemden kopyalanan dosya tekrar üzerine yazılmaz.
Böylece, /etc/motd dosyasını herbir hosts.txt dosyamızdan kendi sistemimize kopyalayarak çalıştırırız.
me@home:~$ parallel-slurp -h hosts.txt -L local.dir /etc/motd motd [1] 18:39:39 [SUCCESS] gold.my.flat 22 [2] 18:39:39 [SUCCESS] silver.my.flat 22
Bu bize /etc/motd dosyasını local.dir dizini içerisinde motd adı ile adlandırarak kendi sistemimize kopyalar.
me@home:~$ tree local.dir/ local.dir/ |-- gold.my.flat | `-- motd `-- silver.my.flat `-- motd 2 directories, 2 files
Yukarıda gördüğünüz gibi kopyaladığımız yerdeki herbir makine adı için bir seviye alt kategori oluşturulmuştur.
Bu aracı verimli bir şekilde kullanmak için birçok seçenek vardır, biraz manuel dokumanına bakarak işinize yarayan birçok özelliği bulabilirsiniz, örneğin -r (recursive) seçeneği hepimizin scp kullanırken kullandığı, aşina olduğumuz bir parametredir.
UYARI: parallel-slurp sadece birden fazla makineden kendi makinenize kopyalama içindir. Birden fazla makineye kopya yapmak için parallel-scp aracını kullanınız.
Sonuç olarak bu araç hali hazırda SSH key tabanlı yetkilendirmye sahip birden fazla sistem yönetiminde kullanılabilir.