Python SSH ile Toplu Config

Bu yazımızda Python ile SSH bağlantısı yaparak ağdaki cihazlara toplu config işlemi yollama yapacağız.
Makaleye başlamadan önce Python nedir diye kısaca değinmek gerekirse Python nesne yönelimli bir dildir. Python programlama yapabilmek için yorumlayıcıya ihtiyacınız vardır. C , C++ gibi diller ile karşılaştırırsak hız olarak onlara yakın anlama bakımından onlarda çok daha kolay öğrenebileceğiniz bir dildir. Özellikle hız gerektiren görüntü işleme, sistem, elektronik gibi alanlarda geniş bir şekilde kullanılmaktadır . Ayrıcı çok sayıda kütüphanesi mevcuttur.

Biz de SSH bağlantısı için bu kütüphanelerden birisi olan Paramiko kütüphanesini kullanacağız.

İlk olarak Başlat-Çalıştır-cmd ile konsol ekranımızı açarak Python’un kurulu olduğu klasöre gidelim ve aşağıdaki komutu çalıştıralım;

Komutu çalıştırdığınızda kurulum tamamlanacak. Kurulumun başarılı olup olmadığını anlayabilmek için kütüphaneyi yorumlayıcımıza import etmeyi deneyelim;

Toplu config çekme

Eğer resimdeki gibi hata almadan alt satıra geçiyorsa kurulum başarılı olmuş demektir. Bu arada uygulama için IDLE ve Python 2.7 kullanılmıştır. Ayrıca Python dilinin girintilere dayalı bir dil olduğunu belirmekte fayda var yani birçok dilde (;) ile işletilen komutlar Python dilinde girintilere göre işletilmektedir.

Şimdi ilk olarak işlerimizi kolaylaştırması için bir sınıf hazırlayalım. Hazırladığım sınıf aşağıdaki gibidir;

python ssh bağlantısı

Burada __init__ dediğimiz kısım Python’un özel dekoratörlerinden birisidir. SSHConnect yazarak gerekli bilgileri içerisine yazıp çağırdığımızda ilk olarak __init__ kısmı çalışacaktır. runCommand fonksiyonu içerisine yolladığımız komutun çalışmasını sağlamaktadır. CloseConnection fonksiyonu ise açtığımız bağlantıyı kapatmamızı sağlamaktadır. Şimdi ilk olarak ben ağıma bağladığım Raspberry Pi cihazıma bir ssh komutu yollamaya çalışacağım;

python ssh connect

Gördüğünüz gibi cihaza bağlanıp hangi dosya yolunda bulunduğumun bilgisini aldım. Gelin şimdi de geçen karşılaştığımız bir sıkıntı için çözüm arayalım. Bildiğiniz gibi saatler geçenlerde otomatik geriye alındı. Bu durumda birçok makinanın saatini güncelleme durumu oluştu. Bu gibi durumlarda tek tek cihazlara bağlanıp ayar yapmaktansa Paramiko kütüphanesi ile toplu bir işlem yapabiliriz. Öncelikle Raspberry pi cihazımızın saatini ayarlamayı deneyelim. Bakalım başarılı olabilecek miyiz?;

python Raspberry pi ssh connect

Gördüğünüz gibi ilk olarak date komutu ile cihazın tarih ve saatini aldım daha sonra kendi girdiğim bir tarih ile ayarlayıp tekrar date komutunu gönderdiğimde işlemin başarılı olduğunu gördüm. Şimdi gelelim toplu config yollamaya. Şimdi kısa bir beyin fırtınası yapalım. Ben şimdi tüm ipleri programa koysam bir dizi yapıp aslında olur ama bence bir metin dosyasına bunları koyup, daha sonra bunları sırayla okuyup bir döngüye koyarak tek tek cihazlara yollasam daha mantıklı olur diye düşünüyorum. Öncelikle metin dosyası okumak için aşağıdaki komutlar kullanılmaktadır;

with open ("ip_adresleri.txt") as cihaz_f: 
cihazlar=cihaz_f.readlines() 
cihaz_f.close()

Bu komutlar ile dosyamızı okuduk ve cihazlar içerisine attık. Şimdi bu değişkeni for döngüsüne sokalım ve ip adreslerini sırayla alıp cihazlarımıza yollayalım;

cmd=”date –s “yeni_tarih””
for line in cihazlar: 
ip=line.rstrip() 
con = SSHConnect(ip, "admin", "parola") 
cli = con.runCommand(cmd) 
con.closeConnection()

Burada for in döngüsünü foreach olarak düşünün cihazlar değişkenini sırayla tarıyor. Daha sonra rstrip fonksiyonu ile ip adresimizin sağ kısmındaki boşlukları kestik. Son olarak yukarıda yaptığımız gibi bağlantı kurum cihazımıza yeni tarih ayarını yollayarak bağlantımızı kapattık. İnşallah yararlı olmuştur.

Yorum yapın