Skip to main content

⚙️ Otomasyon ve Güvenlik için İleri Seviye Bash Betikleme Teknikleri


🎯 Bu Rehberde Ne Öğreneceksiniz?

Bash betikleri (script), Linux ortamındaki BT uzmanları için temel bir beceridir.
Bu rehber, betik yazmanın temellerini aşarak:

  • Gelişmiş hata yönetimi (set -e, trap),
  • Karmaşık veri yapıları (ilişkisel diziler),
  • Paralel süreç yönetimi (xargs -P, wait)
    tekniklerini uygulamalı örneklerle anlatır.

Bu bilgilerle, Rabisu Bulut sunucularınızdaki otomasyon görevlerini daha verimli, güvenilir ve ölçeklenebilir hale getirebilirsiniz.


1. 🧠 Güvenilir ve Okunabilir Betikler İçin En İyi Uygulamalar

İleri seviye betikler, sadece çalışmakla kalmamalı — bakımı kolay, okunabilir ve güvenli olmalıdır.

1.1 Okunabilirlik ve Modülerlik

  • Yapılandırma: Betiğinizi “başlatma”, “değişkenler”, “fonksiyonlar” ve “ana işlem” bloklarına ayırın.
  • Açıklamalar: Fonksiyonların amacı, girdisi ve çıktısını kısa yorumlarla belirtin.
  • İsimlendirme: Anlamlı değişkenler kullanın:
    log_dosyasi_yolu="/var/log/yedekleme.log"

Modülerlik: Tekrarlayan komutları fonksiyon haline getirerek kodu sadeleştirin.


2. ⚠️ Hata Yönetimi (Error Handling)

Bir betikte hata kontrolü yoksa, sistem hataları zincirleme etki yaratabilir. Bu yüzden Bash’in dahili hata yönetimi komutlarını etkin şekilde kullanmak kritik önem taşır.

2.1 set -e ile Güvenli Çalıştırma


set -e

Bu komut, betikteki herhangi bir satır başarısız olursa işlemi anında durdurur.

2.2 trap ile Temizlik (Cleanup)


trap 'rm -f /tmp/gecici_dosya; echo "Betik kesintiye uğradı. Temizleniyor..." >&2' EXIT

💡 Betik hata verse bile /tmp/gecici_dosya dosyası otomatik silinir.

2.3 Anlamlı Hata Mesajları


if ! cp /kaynak/dosya /hedef/; then
echo "❌ Hata: Dosya kopyalanamadı. Lütfen izinleri kontrol edin." >&2
exit 1
fi

Kullanıcıya neyin yanlış gittiğini gösteren mesajlar, hata çözüm süresini kısaltır.


3. 🧩 Gelişmiş Bash Özelliklerinden Faydalanma

3.1 🔑 İlişkisel Diziler (Associative Arrays)

Anahtar-değer eşlemesiyle sistem yapılandırmalarını kolayca yönetin:


declare -A sunucu_ipleri=(
["web"]="192.168.1.10"
["vt"]="192.168.1.20"
)
echo "🌐 Web Sunucusu IP: ${sunucu_ipleri["web"]}"

3.2 🔍 Düzenli İfadeler (Regex) ile Veri Ayıklama


log="Hata: Baglanti zaman asimina ugradi 14:25:30"
if [[ $log =~ Hata:\ (.+)\ ([0-9:]+) ]]; then
echo "Mesaj: ${BASH_REMATCH[1]}"
echo "Saat: ${BASH_REMATCH[2]}"
fi

Regex, log dosyalarından bilgi çekmek için güçlü bir araçtır.

3.3 🧷 Alt Kabuklar ve Süreç İkamesi


( cd /tmp && echo "Alt Kabuk Dizini: $(pwd)" )
echo "Ana Kabuk Dizini: $(pwd)"

Alt kabuk, değişikliklerin ana betiği etkilemesini engeller.


diff <(ls /dizin1) <(ls /dizin2)

Bu komut, iki dizini geçici dosya olmadan karşılaştırır.


4. 🚀 Otomasyon ve Performans Optimizasyonu

4.1 Günlük Dosyası Analizi (Log Parsing)


grep -i "error" /var/log/syslog | awk '{print $1, $2, $3, $NF}' | sort | uniq -c > /var/log/hata_ozeti.log
echo "✅ Hata özeti oluşturuldu!"

Bu betik, sistem günlüklerinden hata özetini çıkarır ve tekrarları filtreler.

4.2 Paralel İşlem (xargs -P)


find /veri -type f -name "*.log" | xargs -n 1 -P 4 gzip

💡 -P 4 parametresiyle dört paralel işlem çalışır — çok çekirdekli sistemlerde performansı katlar.

4.3 Arka Plan Görevleri


for dosya in /veri/*.log; do
gzip "$dosya" &
done
wait

wait komutu, tüm arka plan işlemleri bitmeden sonraki adıma geçilmesini önler.


❓ Sıkça Sorulan Sorular (SSS)

**1. Betik performansını nasıl ölçerim? **

time ./betik.sh komutunu kullan. Gerçek, kullanıcı ve sistem sürelerini ayrı ayrı gösterir.

2. Hata ayıklama için ne kullanılır?

set -x komutunu açarak her adımı terminalde görebilirsin.

**3. Bash’te test yazmak mümkün mü? **

Evet, BATS framework’ü ile otomatik testler yazabilirsin.

4. Gizli bilgiler nasıl korunur?

Parolaları .env dosyasında sakla ve .gitignore içine ekle.

5. Performansı artırmak için ne yapmalıyım?

Paralel işlemler (xargs -P, &, wait) kullan ve gereksiz harici komutlardan kaçın.


🏁 Sonuç

Bu ileri seviye Bash teknikleriyle:

Otomasyon süreçlerinizi hızlandırabilir,

Sunucu yönetimini sadeleştirebilir,

Hata risklerini minimize edebilirsiniz.

🔐 Rabisu Bulut altyapınızda bu teknikleri uygulayarak, otomasyonu güvenli ve verimli hale getirin.