Python ile sistem otomasyonu
Sunucu işlerini Python'a devreder; süreçleri, dosyaları, SSH bağlantılarını ve zamanlanmış görevleri yöneten tekrarlanabilir ve güvenli betikler yazarsın.
Seviye 301 · 18 ders · 18 pratik lab
Dersler
Yerel sistem
- subprocess: zaman aşımı, ortam ve dönüş kodu
- psutil ile süreç, bellek ve disk izleme
- Dosya değişikliklerini izlemek
- Python'dan izin ve sahiplik yönetimi
- Tekrar çalıştırılabilir betik: aynı sonucu iki kez vermek
- Kısa görev: disk dolmadan uyaran betik
Uzak sistemler
- paramiko ile SSH komutu çalıştırmak
- SFTP ile dosya aktarımı
- Ana makine anahtarını doğrulamak
- Birden çok sunucuda paralel komut
- Kısa görev: tüm sunuculardaki yerel hesapları listele
Zamanlama ve raporlama
- cron ve systemd zamanlayıcısıyla Python
- Tek örnek çalıştırma ve kilit dosyaları
- E-posta ile rapor göndermek: smtplib
- Şablonla yapılandırma dosyası üretmek: Jinja2
- Kuru çalıştırma ve onaylı değişiklik
- Kısa görev: süresi dolan sertifikaları raporla
Bitirme
- Bitirme görevi: sunucu filosunun güncelleme ve sağlık raporu
Pratik lablar
- Takılan komutu zaman aşımıyla kesmek: subprocess.run ile çalıştırılan komuta zaman aşımı ekle; süre dolunca süreç öldürülsün ve anlamlı bir sonuç dönsün.
- En çok bellek kullanan süreçleri listelemek: psutil ile en çok bellek kullanan beş süreci ad ve yüzdeyle listele; kaybolan süreçler hata vermesin.
- Gelen klasörünü izleyip dosyaları işlemek: Bir klasöre düşen yeni dosyaları yazımı bitince işleyen yoklamalı bir izleyici yaz; aynı dosya iki kez işlenmesin.
- Gevşek izinli anahtar dosyalarını düzeltmek: Bir dizin ağacında herkesin okuyabildiği anahtar dosyalarını bul, izinlerini 0600 yap ve değişiklikleri raporla.
- Ayar satırını yalnızca yoksa eklemek: Bir ayar dosyasına satır ekleyen betiği iki kez çalıştırıldığında yinelenen satır üretmeyecek şekilde düzelt.
- Temizlik betiğine kuru çalıştırma eklemek: Eski dosyaları silen betiğe --dry-run ve --yes seçeneklerini ekle; onaysız hiçbir dosya silinmesin.
- Bayat kilit dosyasını ayırt etmek: Kilit dosyası kalınca bir daha çalışmayan zamanlanmış işi süreç kimliği denetimi ve fcntl kilidiyle düzelt.
- Sunucuların çalışma süresini SSH ile toplamak: paramiko ile lab SSH hedeflerine bağlanıp uptime çıktısını topla ve erişilemeyen sunucuyu ayrıca raporla.
- SFTP ile dosya gönderip özetini doğrulamak: Bir yapılandırma dosyasını SFTP ile lab sunucusuna yükle ve uzak sha256sum çıktısını yerel özetle karşılaştır.
- Bilinmeyen ana bilgisayar anahtarını reddetmek: AutoAddPolicy kullanan betiği bilinen anahtarlar dosyasıyla doğrulama yapacak şekilde düzelt; anahtarı değişen hedef reddedilsin.
- Çok sunucuda sınırlı paralel komut: Lab sunucularında aynı komutu aynı anda en fazla dört bağlantıyla çalıştır; sonuçları sunucu adına göre sırala ve hataları ayır.
- Zamanlanmış iş için sarmalayıcı betik: Bir işi çalıştırıp başlangıç, bitiş ve çıkış kodunu günlüğe yazan, hata olursa sıfırdan farklı kod dönen sarmalayıcıyı yaz.
- Şablondan sanal sunucu ayarı üretmek: Jinja2 şablonu ve site listesinden yapılandırma dosyaları üret; tanımsız değişken sessizce boş geçmesin, hata versin.
- Ekli rapor e-postası hazırlamak: EmailMessage ile düz metin gövdeli ve CSV ekli bir rapor iletisi oluştur ve yerel sahte SMTP sunucusuna gönder.
- Betiği systemd zamanlayıcısına bağlamak: Saatlik çalışan betik için servis ve zamanlayıcı birim dosyalarını Python ile üret; kaçırılan çalıştırmalar açılışta telafi edilsin.
- Günlük özet raporunu dosyaya yazmak: Disk ve servis denetimi sonuçlarından tarihli bir HTML özet raporu üret; değerler kaçışlanarak yazılsın ve aynı gün yeniden çalışınca dosya güncellensin.
- Şablondan karşılama dosyası üretmek: Sunucu adı, ortam ve sorumlu ekip bilgisini içeren sözlükten Jinja2 şablonuyla tek bir karşılama dosyası üret ve çıktıyı beklenen metinle karşılaştır.
- Şablon çıktısını yalnızca değiştiyse yazmak: Sunucu başına ayar dosyalarını ortak bir temel şablondan üret, çıktıyı doğrulayıp yalnızca içerik değiştiyse atomik olarak yaz ve değişen sunucuları raporla.
Kurs hakkında
Sunucu işlerini Python'a devreder; süreçleri, dosyaları, SSH bağlantılarını ve zamanlanmış görevleri yöneten tekrarlanabilir ve güvenli betikler yazarsın.
Ne öğreneceksin
- Yerel sistem
- Uzak sistemler
- Zamanlama ve raporlama
- Bitirme
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.