Geliştirme ortamımızı kurup ilk kodumuzu çalıştırdıktan sonra sıra programlamanın kalbi olan "veri" kavramını anlamaya geldi. Sistemci gözüyle bakarsak; ağdaki bir cihazın IP adresi, bir portun açık veya kapalı olma durumu, o anki CPU yükü veya bir switch'in hostname'i birer veridir. Yazdığımız otomasyon betikleri (script) bu verileri alır, işler ve bize bir sonuç üretir. Bu bölümde, verileri bellekte nasıl tutacağımızı ve farklı veri tiplerinin nasıl yönetileceğini kapsamlı bir şekilde inceleyeceğiz.
Değişken (Variable) Nedir?
Değişkenler, verilerimizi bilgisayarın RAM'inde saklamak için kullandığımız isimlendirilmiş kutucuklardır. C veya Java gibi dillerde bir değişken yaratırken kutunun içine ne koyacağınızı (tam sayı mı, metin mi?) önceden belirtmeniz gerekir. Python ise dinamik tipli (dynamically typed) bir dildir. Yani değişkene atadığınız veriye bakarak onun tipini otomatik olarak anlar.
# Sistemci senaryosunda değişken atamaları
sunucu_adi = "Srv-Database-01"
dinlenen_port = 5432
cpu_kullanimi = 85.5
port_aktif_mi = TrueDeğişken İsimlendirme Kuralları:
Değişken isimleri harf veya alt çizgi (_) ile başlamalıdır. Rakamla başlayamaz (1sunucu hatalıdır, sunucu1 geçerlidir).
Boşluk veya Türkçe karakter (ş, ı, ğ vb.) kullanmamak kodun evrenselliği açısından kritik bir en iyi uygulamadır (best practice).
Python büyük/küçük harf duyarlıdır (Case Sensitive). Uptime ile uptime iki farklı değişkendir.
Temel Veri Tipleri
Otomasyon süreçlerinde verileri doğru tipte tanımlamak olası hataların (bug) önüne geçer.
String (Metin - str): Harfleri, kelimeleri veya karakter dizilerini tutar. Tek tırnak ('...') veya çift tırnak ("...") içinde yazılırlar. Örneğin IP adresleri veya hostname'ler genellikle string olarak tutulur.
ip_adresi = "192.168.10.5"
switch_model = 'Cisco Catalyst 2960-X'
# String'leri birleştirme (Concatenation)
mesaj = switch_model + " cihazının IP adresi: " + ip_adresi
print(mesaj)Integer (Tam Sayı - int) ve Float (Ondalıklı Sayı - float): Matematiksel işlemlere girecek veriler için kullanılır. Tırnak içine alınmazlar. Eğer bir sayıyı tırnak içine alırsanız, Python onu matematiksel bir değer değil, metin olarak görür.
# Integer örneği (Örn: VLAN ID veya Port Numarası)
vlan_id = 10
aktif_kullanici = 145
# Float örneği (Örn: Uptime, sıcaklık veya CPU metrikleri)
sensor_sicakligi = 42.7 Boolean (Mantıksal Değer - bool): Sadece iki durumdan birini alabilir: True (Doğru/1) veya False (Yanlış/0). Sistem kontrollerinde hayat kurtarır. Mutlaka baş harfi büyük yazılmalıdır.
radius_erisimi_var = True
yedekleme_tamamlandi = FalseTip Dönüşümleri (Type Casting)
Sistem yönetiminde veriler çoğu zaman bize metin (String) formatında gelir. Örneğin bir API'den, komut satırı çıktısından veya bir log dosyasından okuduğunuz "8080" değeri bir sayı değil, bir metindir. Bunu matematiksel bir karşılaştırmada kullanabilmek için Integer'a çevirmeliyiz.
Tip dönüşümleri için int(), float(), str() ve bool() fonksiyonları kullanılır.
okunan_port_log = "8080"
# Şu an bu metin. Buna 1 ekleyemeyiz, hata verir.
# Tip dönüşümü:
gercek_port = int(okunan_port_log)
print("Sonraki Port:", gercek_port + 1) # Çıktı: Sonraki Port: 8081
# Float'ı Integer'a çevirme (Ondalık kısmı atar)
cpu_load = 92.8
yuvarlanmis_cpu = int(cpu_load)
print(yuvarlanmis_cpu) # Çıktı: 92Hata Yakalama İpucu: Eğer
"192.168.1.1"gibi harf veya nokta içeren bir string'iint()ile dönüştürmeye çalışırsanız, Python size ValueError hatası fırlatır.
F-String ile Modern ve Temiz Metin Formatlama
Sistemde çalışan script'lerin düzgün ve anlaşılır loglar veya ekran çıktıları üretmesi şarttır. Değişkenleri string'lerle birleştirirken aralara + işareti koymak hem yorucudur hem de boşluk hatalarına yol açar. Python 3.6 ile hayatımıza giren f-string yapısı bu işin en temiz yoludur.
Metnin başına f harfi koyarız ve değişkenleri süslü parantezler {} içine yazarız:
cihaz_adi = "Merkez-Firewall"
baglanti_suresi = 120.5
durum = "Aktif"
# Klasik ve zor yöntem:
# print(cihaz_adi + " isimli cihaz " + str(baglanti_suresi) + " saattir " + durum)
# Modern f-string yöntemi (Sistemcilerin favorisi):
print(f"Sistem Logu: {cihaz_adi} isimli cihaz {baglanti_suresi} saattir {durum} durumunda çalışıyor.")Değişkenleri tanımlamayı, doğru veri tiplerini seçmeyi ve metinleri formatlamayı öğrendik. Ancak ağlarımızdaki binlerce MAC adresini veya şirketimizdeki yüzlerce kullanıcının bilgisini tek tek değişkenlerde tutamayız.
Serinin bir sonraki bölümünde verileri gruplayıp yığınlar halinde yönetmemizi sağlayan gelişmiş veri yapılarına; List (Listeler), Tuple, Set ve Dictionary (Sözlükler) dünyasına giriş yapacağız.
