Kazanimlar:
- Yapay zeka ile Bash, PowerShell ve Python otomasyon scriptlerini net kısıt ve güvenlik korkuluklarıyla üretebilme
- Idempotency, dry-run, hata yönetimi ve geri dönüş gibi ilkeleri her scripte ekleyip 'üret, sertleştir, doğrula' döngüsünü uygulayabilme
- Üretilen scriptin çalışmasının güvenli olduğu anlamına gelmediğini kavrayıp yıkıcı satırları okuyup test ederek sorumluluğu üstlenme alışkanlığı edinebilme
Otomasyon Scriptleri: Bash, PowerShell ve Python'ı YZ ile Güvenle Üretmek
Sistem yöneticisinin en büyük düşmanı, elle tekrar tekrar yapılan işlerdir: her makineye tek tek bağlanıp log temizlemek, aynı kullanıcıyı yirmi sunucuda açmak, her sabah aynı sağlık kontrolünü çalıştırmak. Bu tekrar hem zaman yer hem de insan hatasına açıktır. Otomasyon scripti, bu tekrarları bilgisayara devreden küçük bir programdır — Linux dünyasında çoğu zaman Bash (kabuk komut dili), Windows dünyasında PowerShell (Microsoft'un otomasyon kabuğu) ve platformdan bağımsız işler için Python ile yazılır. İşte YZ, bu scriptlerin ilk taslağını üretmekte, açıklamakta ve iyileştirmekte olağanüstü hızlıdır. Ama script bir metin değil, sisteminizde çalışan bir güçtür; bir Excel formülünden farklı olarak yanlışsa dosya siler, servis durdurur, erişim keser. Bu yüzden bu ünitenin sözü şudur: YZ scripti yazar, siz onu okur, test eder ve sorumluluğunu alarak çalıştırırsınız.
Bu ünitede YZ ile güvenli, okunabilir ve geri alınabilir scriptlerin nasıl üretileceğini; idempotency (aynı scripti iki kez çalıştırınca ikinci kez zarar vermemesi) ve dry-run (kuru çalışma) gibi hayat kurtaran ilkeleri; ve bir scripti üretime almadan önce geçmesi gereken kontrolleri öğreneceksiniz.
Neden YZ ile script yazmak bu kadar güçlü?
Deneyimli bir yönetici bile bir Bash döngüsünün tam sözdizimini, bir PowerShell cmdlet'inin (komutunun) parametrelerini ya da bir Python try/except bloğunu ezbere bilmeyebilir. YZ bu boşluğu anında doldurur: niyeti düz Türkçe anlatırsınız, o çalışan bir taslak üretir. Dahası, var olan bir scripti YZ'ye verip "bunu açıkla", "hata yönetimi ekle", "daha okunabilir yap" diyebilirsiniz. Bu, öğrenme eğrisini kısaltır ve kıdemsiz ekip üyelerini hızlandırır.
Ama güç sorumluluk getirir. YZ'nin ürettiği bir script çoğu zaman "mutlu yol"u (her şey yolundaysa) doğru yazar; ama kenar durumları (dosya yoksa, disk doluysa, ağ koparsa) atlayabilir ya da tehlikeli varsayımlar yapabilir. Bu yüzden YZ ile script üretimini üç aşamalı düşünün: üret, sertleştir, doğrula.
Adım adım: güvenli script üretimi
- Niyeti ve kısıtı net yaz. Hangi işletim sistemi, hangi kabuk sürümü, hangi dosya yolları, hangi haklar? "Ubuntu 22.04, Bash 5, root değil sudo, sadece /opt/app/logs altında çalış" gibi. Belirsiz istem tehlikeli varsayım üretir.
- Güvenlik korkuluklarını iste. Scripti "başarısızlıkta dur" (set -euo pipefail Bash'te), yıkıcı işlemler için onay sorma, işlem öncesi yedek, ve dry-run modu ile isteyin. Bu korkuluklar, YZ'nin atladığı kenar durumları yakalar.
- Idempotent yaz. Script, ikinci kez çalışınca hata vermemeli veya zarar vermemeli. "Kullanıcı zaten varsa atla", "dizin yoksa oluştur, varsa dokunma" mantığı kurun. Bu, otomasyonun tekrar tekrar güvenle koşmasını sağlar.
- Oku ve anla. Üretilen her satırı okuyun. YZ'den yıkıcı komutları (rm, Remove-Item, DROP) ayrıca işaretlemesini isteyin.
- Dry-run ile test et. Önce gerçek işlemler yerine ekrana "ne yapacağını yazan" modda çalıştırın. Çıktı beklediğiniz gibiyse gerçek moda geçin — ve önce test makinesinde.
- Geri dönüşü hazırla. Script yedek alıyor mu, aldığı yedeği nasıl geri yükleyeceğinizi biliyor musunuz? Loglama var mı, ne yaptığını sonradan görebiliyor musunuz?
İpucu: Her yıkıcı scripte bir DRY_RUN=true değişkeni ve bir --apply bayrağı koydurun. Varsayılan davranış hiçbir şeyi silmeden ne olacağını yazmak olsun; gerçek silme yalnızca açıkça --apply verildiğinde çalışsın. Bu tek alışkanlık kariyer boyu felaketleri önler.
Üç mini vaka
Vaka 1 — Idempotency 3 saati kurtardı. Bir yönetici, 25 sunucuda aynı izleme ajanını kuran bir script yazdırdı. İlk sürüm idempotent değildi: ajan zaten kuruluysa ikinci koşuda yapılandırmayı bozuyordu. Mühendis YZ'den "kurulu mu diye kontrol et, kuruluysa atla" mantığı ekletti. Sonraki bakım penceresinde script iki kez yanlışlıkla tetiklendi ama zarar vermedi. Idempotency, 25 sunuculuk bir kurtarmayı gereksiz kıldı.
Vaka 2 — Dry-run bir kök dizini kurtardı. Bir ekip, eski yedekleri temizleyen bir Bash scripti aldı. Değişken boşsa yol /backups/ yerine / oluyordu — klasik bir tehlike. Mühendis önce DRY_RUN modunda çalıştırdı, çıktıda rm -rf / benzeri bir satır görünce donup kaldı, değişken kontrolü ekletti (: "${BACKUP_DIR:?boş olamaz}"). Kuru çalışma, tüm diski silecek bir hatayı üretime çıkmadan yakaladı.
Vaka 3 — Hata yönetimi bir gece uyandırmasını önledi. Bir PowerShell scripti, disk dolduğunda log arşivliyordu. İlk sürüm ağ paylaşımı erişilemezse sessizce başarısız oluyor ve diski doldurmaya devam ediyordu. YZ'ye "her adımda başarıyı doğrula, başarısızsa e-posta uyar ve dur" ekletildi. Bir hafta sonra paylaşım koptu; script durup uyardı, disk dolmadı, kimse gece 3'te uyanmadı.
Dört kopyalanabilir şablon
1) Güvenli Bash scripti üretimi:
Rolün: kıdemli Linux otomasyon mühendisi.Ubuntu 22.04 / Bash 5 için bir script yaz. Amaç:[amaç]. Kurallar:- Başta "set -euo pipefail" olsun.- Zorunlu değişkenleri ": ${VAR:?}" ile doğrula.- Yıkıcı işlemleri DRY_RUN=true varsayılanıyla yap; gerçek uygulama sadece --apply bayrağıyla çalışsın.- Her adımı stdout'a logla, hatada anlamlı mesajla dur.- Idempotent olsun (ikinci koşuda zarar vermesin).Sonra: yıkıcı olabilecek satırları ayrıca işaretle veüretim öncesi test etmem gereken 3 durumu yaz.
2) Var olan scripti sertleştirme:
Aşağıdaki scripti üretime uygun hale getir:(1) hata yönetimi ve loglama ekle,(2) idempotent yap,(3) yıkıcı komutları dry-run arkasına al,(4) sabit kodlanmış yolları ve sırları değişkene çıkar.Değiştirdiğin her satırı ve nedenini kısaca açıkla.Script: [script]
3) PowerShell güvenli otomasyon:
Rolün: Windows otomasyon uzmanı. PowerShell 5.1 uyumlubir script yaz. Amaç: [amaç]. Kurallar:- "$ErrorActionPreference = 'Stop'" ile başla.- Yıkıcı cmdlet'lere -WhatIf desteği ekle (varsayılan WhatIf).- Her işlemi try/catch ile sar, hatayı logla.- Kimlik bilgisi sabit kodlama; parametre veya secure input kullan.Yıkıcı satırları işaretle ve geri alma adımlarını yaz.
4) Cron/zamanlama ifadesi çözme ve doğrulama:
Şu cron ifadesini düz Türkçe açıkla ve bir sonraki 3çalışma zamanını yaz: [ifade]Ayrıca amacım "[amaç]" ise bu ifade doğru mu, yoksaönerdiğin bir düzeltme var mı? Zaman dilimi etkisini de belirt.
Zayıf prompt / Güçlü prompt
Zayıf prompt:
Bana log temizleyen bir script yaz.
Bu istem tehlikelidir: hangi OS, hangi dizin, hangi yaş sınırı, hangi güvenlik korkuluğu belli değil. YZ tek satırlık, yıkıcı ve doğrulanamaz bir rm verebilir.
Güçlü prompt:
Rolün: kıdemli Linux otomasyon mühendisi.Ubuntu 22.04 / Bash için bir log temizleme scripti yaz.Yalnızca /opt/app/logs altındaki, 30 günden eski .logdosyalarını sil. Kurallar: set -euo pipefail; BACKUP_DIRve LOG_DIR değişkenlerini doğrula (boşsa dur); silmedenönce dosya listesini logla; DRY_RUN=true varsayılan olsun,gerçek silme sadece --apply ile; idempotent olsun.Yıkıcı satırları işaretle ve test etmem gereken 3 senaryoyu yaz.
Özellik
Zayıf/hızlı script
Sertleştirilmiş script
Hata yönetimi
Yok, sessiz başarısızlık
set -euo pipefail, try/catch
Yıkıcı işlem
Doğrudan çalışır
Dry-run + açık onay bayrağı
Tekrar çalıştırma
Zarar verebilir
Idempotent, güvenli
Sır yönetimi
Sabit kodlu
Değişken/gizli girdi
Geri alma
Yok
Yedek + geri yükleme adımı
Sık yapılan hatalar
- Dry-run'sız yıkıcı script çalıştırmak. rm, Remove-Item, DROP içeren scripti önce kuru modda görmemek diske mal olur.
- Boş değişken kontrolü atlamak. Boş bir yol değişkeni /backups/ yerine / yapar; : "${VAR:?}" ile mutlaka doğrulayın.
- Idempotency'yi unutmak. İki kez çalışınca bozulan script, otomasyonu güvenilmez kılar.
- Sırları sabit kodlamak. Parola ve anahtarı script içine yazmak, o scripti paylaşınca sızıntıdır.
- Üretimde test etmek. İlk koşuyu üretimde yapmak, provayı sahnede yapmaktır; önce test makinesi.
Dikkat: YZ'nin verdiği bir scripti "çalıştı, demek ki doğru" diye kabul etmeyin. Çalışması, yıkıcı olmadığı anlamına gelmez. Bir script mutlu yolda çalışıp kenar durumda veri silebilir; asıl test kenar durumlardır.
Özetle
Otomasyon scriptleri tekrarı ortadan kaldırır ve insan hatasını azaltır; YZ bu scriptleri üretmekte, açıklamakta ve sertleştirmekte olağanüstü hızlıdır. Ama script çalışan bir güçtür: yanlışsa siler, durdurur, keser. Bu yüzden "üret, sertleştir, doğrula" döngüsünü kurun. Her yıkıcı scripte hata yönetimi, idempotency, dry-run ve geri dönüş ekletin. Sırları değişkene çıkarın, ilk koşuyu test makinesinde yapın. YZ scripti yazar; okumak, test etmek ve çalıştırmanın sorumluluğunu almak sizin işinizdir.
Uygulama görevi
İşinizde elle tekrarladığınız bir görevi seçin (örneğin log temizleme, kullanıcı açma, sağlık kontrolü). Yukarıdaki "Güvenli Bash scripti" veya "PowerShell güvenli otomasyon" şablonuyla YZ'den bir taslak isteyin. Üretilen scripti satır satır okuyup yıkıcı satırları işaretleyin. Bir test makinesinde önce dry-run modunda çalıştırın, çıktıyı beklentinizle karşılaştırın. Sonra scripti YZ'ye geri verip "sertleştir" şablonuyla iyileştirin ve iki sürüm arasındaki 5 farkı not edin.
Kontrol listesi
- [ ] İsteme OS, kabuk sürümü, yollar ve haklar gibi kısıtları yazdım mı?
- [ ] Script set -euo pipefail / $ErrorActionPreference='Stop' ile hataya dayanıklı mı?
- [ ] Yıkıcı işlemler dry-run/-WhatIf arkasında ve açık onay bayrağı gerektiriyor mu?
- [ ] Script idempotent mi (ikinci koşuda güvenli)?
- [ ] Sırları sabit kodlamak yerine değişken/gizli girdiye çıkardım mı?
- [ ] İlk koşuyu test makinesinde yapıp geri dönüş planını hazırladım mı?