17 – Bash Script ile Gerçek Hayat Uygulamaları

Bash script, özellikle Linux ve UNIX tabanlı sistemlerde günlük yönetim ve otomasyon işlemlerini gerçekleştirmek için güçlü bir araçtır. Bu yazıda, Bash script kullanarak gerçekleştirebileceğiniz bazı pratik, gerçek hayat uygulamalarını ele alacağız. Bu script’ler, sistem yöneticileri ve geliştiriciler için zamandan tasarruf sağlamak, tekrarlayan işleri otomatikleştirmek ve iş süreçlerini basitleştirmek açısından oldukça faydalıdır.
1. Basit Bir Yedekleme Script’i Hazırlama
Verilerin yedeklenmesi, hem kişisel hem de kurumsal kullanıcılar için kritik bir süreçtir. Bash script, belirli dizinleri veya dosyaları düzenli olarak yedeklemek için kolay bir çözüm sunar. Aşağıda, belirli bir dizini sıkıştırarak bir yedekleme dosyasına kaydeden basit bir yedekleme script’i örneği yer almaktadır:
#!/bin/bash
# Yedeklenecek dizin ve yedekleme konumu
SOURCE_DIR="/home/kullanici/Belgeler"
BACKUP_DIR="/home/kullanici/Yedekler"
DATE=$(date +"%Y%m%d_%H%M%S")
# Yedekleme işlemi
tar -czf "$BACKUP_DIR/Belgeler_Yedek_$DATE.tar.gz" "$SOURCE_DIR"
echo "Yedekleme başarıyla tamamlandı: $BACKUP_DIR/Belgeler_Yedek_$DATE.tar.gz"
Bu script, belirttiğiniz kaynak dizini (/home/kullanici/Belgeler
) sıkıştırarak zaman damgası eklenmiş bir dosya adıyla yedeklemekte ve bu dosyayı yedekleme konumuna (/home/kullanici/Yedekler
) kaydetmektedir. Bu script’i cron
aracı ile belirli aralıklarla çalıştırarak düzenli yedekleme otomasyonu sağlayabilirsiniz.
2. Log Dosyalarını Analiz Etme Script’i
Log dosyaları, sistem durumu ve olası hatalar hakkında bilgi sağlar. Bash script, bu log dosyalarını tarayıp belirli bir desen aramak için kullanılabilir. Aşağıda, /var/log
dizininde belirli bir anahtar kelimeyi arayan basit bir script bulunmaktadır:
#!/bin/bash
# Aranacak kelime
KEYWORD="hata"
LOG_DIR="/var/log"
# Log dosyalarını tarama
grep -i "$KEYWORD" $LOG_DIR/*.log > /home/kullanici/hata_bilgileri.txt
echo "Log analizi tamamlandı. Bulunan hatalar /home/kullanici/hata_bilgileri.txt dosyasına kaydedildi."
Bu script, /var/log
dizinindeki .log
uzantılı dosyalar arasında “hata” kelimesini aramakta ve eşleşen tüm satırları bir dosyaya kaydetmektedir. Bu, sistem yöneticilerinin hızlı bir şekilde hata kayıtlarını bulmasına ve analiz etmesine yardımcı olur.
3. Sistem Bilgilerini Toplama ve Raporlama Script’i
Sistemle ilgili bilgilerin bir araya getirilip raporlanması, sistem durumunu analiz etmek veya düzenli denetimler yapmak için oldukça faydalıdır. Bash script, CPU kullanımı, bellek durumu, disk kullanımı gibi bilgileri toplayabilir ve bunları bir rapor olarak sunabilir:
#!/bin/bash
# Sistem bilgilerini toplama
HOSTNAME=$(hostname)
DATE=$(date +"%Y-%m-%d %H:%M:%S")
UPTIME=$(uptime -p)
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
MEMORY_USAGE=$(free -m | awk 'NR==2{printf "%.2f", $3*100/$2 }')
DISK_USAGE=$(df -h | awk '$NF=="/"{printf "%s", $5}')
# Rapor oluşturma
echo "Sistem Bilgileri - $DATE" > /home/kullanici/sistem_raporu.txt
echo "Hostname: $HOSTNAME" >> /home/kullanici/sistem_raporu.txt
echo "Uptime: $UPTIME" >> /home/kullanici/sistem_raporu.txt
echo "CPU Kullanımı: $CPU_USAGE%" >> /home/kullanici/sistem_raporu.txt
echo "Bellek Kullanımı: $MEMORY_USAGE%" >> /home/kullanici/sistem_raporu.txt
echo "Disk Kullanımı: $DISK_USAGE" >> /home/kullanici/sistem_raporu.txt
echo "Sistem raporu oluşturuldu: /home/kullanici/sistem_raporu.txt"
Bu script, mevcut sistem durumu ile ilgili temel bilgileri toplayarak bir metin dosyasına kaydetmektedir. Sistem yöneticileri bu raporu düzenli aralıklarla oluşturup performans veya kapasiteyle ilgili proaktif önlemler alabilirler.
4. Otomatik Güncelleme ve Bakım Script’i
Linux sunucularının güncellenmesi ve belirli bakım işlemlerinin gerçekleştirilmesi sıkıcı ve zaman alıcı olabilir. Bash script, bu işlemleri otomatik hale getirerek büyük kolaylık sağlar:
#!/bin/bash
# Güncelleme ve temizleme işlemleri
echo "Sistem güncellemeleri kontrol ediliyor..."
sudo apt update && sudo apt upgrade -y
echo "Gereksiz paketler temizleniyor..."
sudo apt autoremove -y
echo "Sistem bakımı başarıyla tamamlandı."
Bu script, sunucu üzerindeki tüm paketlerin güncel olmasını sağlamakta ve kullanılmayan paketleri temizlemektedir. cron
aracıyla haftada bir çalıştırılarak sunucunun her zaman güncel kalması sağlanabilir.
5. Basit Bir Dosya Senkronizasyon Script’i (rsync
kullanımı)
Dosya senkronizasyonu, özellikle verilerin birden fazla lokasyon arasında eşitlenmesi gerektiğinde önemlidir. rsync
komutunu kullanarak, belirli bir dizindeki dosyaları başka bir sunucuya veya yedekleme lokasyonuna senkronize edebilirsiniz:
#!/bin/bash
SOURCE_DIR="/home/kullanici/Belgeler"
DESTINATION_DIR="/mnt/yedekleme"
LOG_FILE="/home/kullanici/rsync_log.txt"
# rsync komutu ile senkronizasyon
rsync -avh --delete "$SOURCE_DIR" "$DESTINATION_DIR" > "$LOG_FILE" 2>&1
echo "Dosyalar başarıyla senkronize edildi. Log: $LOG_FILE"
Bu script, SOURCE_DIR
dizinindeki tüm dosyaları DESTINATION_DIR
dizini ile senkronize eder. --delete
bayrağı, kaynakta silinmiş dosyaları hedeften de silerek her iki tarafın senkronize olmasını sağlar.
6. Basit Bir CI/CD Pipeline Oluşturma
Geliştirme ortamlarında sürekli entegrasyon/sürekli dağıtım (CI/CD) işlemleri için Bash script’ler kullanılabilir. Aşağıdaki script, bir uygulamayı derleyip test ettikten sonra sonuçlara göre dağıtım yapılmasını sağlar:
#!/bin/bash
# Kodları çekme
echo "Kod deposundan en son değişiklikler alınıyor..."
git pull origin main
# Uygulamayı derleme
echo "Uygulama derleniyor..."
make
# Testleri çalıştırma
echo "Testler çalıştırılıyor..."
if make test; then
echo "Testler başarılı. Uygulama dağıtılıyor..."
# Dağıtım komutları
sudo systemctl restart uygulama_servisi
else
echo "Testler başarısız! Dağıtım iptal edildi."
exit 1
fi
Bu script, kodları depodan çekip derledikten sonra testleri çalıştırmakta ve testlerin başarılı olması durumunda uygulamayı yeniden başlatmaktadır. Bu sayede basit bir CI/CD süreci otomatik hale getirilir.
Bash script kullanarak çeşitli gerçek dünya uygulamaları geliştirmek mümkündür. Yedekleme, log analizi, sistem durumu raporlama, güncelleme, dosya senkronizasyonu ve CI/CD gibi birçok iş, Bash ile otomatik hale getirilerek zamandan tasarruf edilebilir ve insan hatası minimize edilebilir. Bu örnekler, Bash script’lerinin sistem yönetimi ve günlük iş akışları üzerindeki potansiyelini gözler önüne sermektedir.
Eğer sistem yönetimi ya da belirli iş süreçlerini otomatikleştirmek istiyorsanız, Bash script yazma becerisi büyük bir avantaj sağlar. Yukarıdaki örnekler, bu tür işleri nasıl daha verimli hale getirebileceğiniz konusunda size yardımcı olabilir.