Merhaba, bu yazımda sizlere fabric kütüphanesinden bahsedeceğim. Her ne kadar başlığımda kütüphane desem de aslında fabric sadece bir python kütüphanesi değil aynı zamanda bir komut satırı aracıdır. Yüklemesi ve kullanması birazdan anlatacağım gibi oldukça basittir. Eğer neye yaradığını tek cümlede özetlemeye çalışırsak; fabric, uzaktaki bilgisayarda veya kendi bilgisayarınızda komut çalıştırmanıza, bilgisayarlar arası dosyalar aktarmanıza ve dosyaları düzenlemenize olanak sağlayan bir python kütüphanesi ve komut satırı aracıdır.

Uzaktaki makinelere erişmek deyince tabii ki de akla ssh gelir. Fabric, ssh ile yapacağımız işleri düzenlememize yardım eder.

Nasıl yükleyeceğimize gelecek olursak bunun için birçok seçeneğimiz var. Ama ben burada en kullanışlı iki tanesini göstermek istiyorum. pip ile

$ pip install fabric

komutunu kullanarak, ya da sisteminizin paket yöneticisini kullanarak yükleyebilirsiniz. Mesela ubuntu için alttaki komutla yükleme yapabilirsiniz.

$ sudo apt-get install fabric

Artık kurulumu tamamladığımıza göre komutları çalıştırmaya başlayabiliriz. Komutlarımızı çalıştırabilmek için “fabfile.py” isimli bir dosya açıp onun içine her bir işimiz için bir fonksiyon yazmamız en pratik yoldur birazdan göstereceğim gibi. Python kodumuzda fabric kütüphanesinden import ederek şu komutları kullanabiliriz:

local(‘<komut>')  # lokalde komut çalıştırma

run(‘<komut>’)   # uzakta komut çalıştırma

put(‘<lokaldeki_dosya_yeri>’,‘<uzaktaki_dosya_yeri>’)  # uzaktaki bilgisayara dosya aktarma

get(‘<uzaktaki_dosya_yeri>’,‘<lokaldeki_dosya_yeri>’)  # uzaktan dosya indirme

sed(‘<dosya_yeri>’,‘<kelime>’,‘<yeni_kelime>’)  # dosyada değişiklik yapma

Ayrıca uzaktaki bilgisayara bağlanabilmek için şunu ekleyebiliriz:

env.hosts= [‘kullanici@host’]

Şimdi örnek bir koda bakalım:

from fabric.api import *

def makine1():

   env.hosts=[‘kullanici@host’]

def uzaktanKomut( komut='komut' ):

   run( komut )

def DosyaGonder( kaynak='/lokaldeki/dosya/yeri' , hedef='/uzakta/kopyalayacagimiz/yer' ):

   run( 'mkdir -p ' + hedef ) # hedefin oldugundan emin olmak icin

   put( kaynak , hedef )

Şimdi komut satırından şu komutu girelim:

$ fab makine1 uzaktanKomut:ls

Eğer ssh için önceden “public key” oluşturmuşsanız bu komut size anında makine1 deki ls komutunun çıktısı gösterecektir.

$ fab makine1 DosyaGonder:ornek.txt,/tmp/hedef

Bu komutla da “ornek.txt” dosyamızı aktarabiliriz.

Burada hemen şunu eklememde de fayda var. Fabric tek satır komutunuzla sadece uzaktaki bir bilgisayarda değil aynı zamanda birden fazla bilgisayarda çalışmanıza da olanak sağlar. Eğer

def makineler():

          env.hosts=[‘kullanici1@host1’,‘kullanici2@host2’,‘kullanici3@host3’]

şeklinde kullancağımız makineleri tanımlasaydık, Yazdığımız komut her bir uzaktaki bilgisayar için ayrı ayrı uygulanırdı.

Gördüğünüz gibi fabric çok değerli bir amaçla yazılmış çok yararlı ve kullanışlı bir python kütüphanesi ve komut satırı aracıdır. Aynı zamanda python diğer modüllerini kullanarak görevleri zamanladığımızda özelllikle sistem adminlerinin çok işine yarayabilecek bir kütüphanedir.

Benim fabric hakkında sizlere aktaracaklarım bu kadardı. Daha fazla bilgi için aşağıdaki linklere bakabilirsiniz. Sağlıcakla kalın.

Kaynaklar:

esref@acm.org