Bulut Günlüğü (AWS)

Sistem Yöneticileri İçin İleri Düzey Bash Scripting Teknikleri

 · 

Sistem Yöneticileri İçin İleri Düzey Bash Scripting Teknikleri

İleri Düzey Bash Scripting Teknikleri ile Sistem Yönetimini Otomatikleştirin

Sistem yöneticileri için tekrarlayan görevleri otomatikleştirmek, verimliliği artırmak ve insan hatası riskini azaltmak kritik öneme sahiptir. Bash scripting, bu otomasyonun temel taşlarından biridir. Ancak, basit komut dosyalarının ötesine geçerek daha karmaşık ve güçlü script'ler yazmak, operasyonel süreçlerinizi önemli ölçüde iyileştirebilir.

Fonksiyonlar ve Modülerlik

Tekrarlayan kod bloklarını azaltmak ve script'lerinizi daha okunabilir hale getirmek için fonksiyonlar kullanın. Fonksiyonlar, belirli görevleri yerine getiren yeniden kullanılabilir kod parçacıklarıdır.

# Fonksiyon tanımlama
check_service() {
  local service_name=$1
  if systemctl is-active --quiet "$service_name"; then
    echo "$service_name servisi aktif."
  else
    echo "$service_name servisi aktif değil. Yeniden başlatılıyor..."
    systemctl start "$service_name"
  fi
}

# Fonksiyonu çağırma
check_service "nginx"
check_service "apache2"

Yukarıdaki örnekte, check_service fonksiyonu, bir servisin durumunu kontrol eder ve aktif değilse yeniden başlatır. Bu, birden fazla servisi izlemek için script'i daha modüler hale getirir.

Hata Yönetimi ve Hata Ayıklama

Üretim ortamlarında çalışan script'lerin güvenilirliği esastır. Hataları yakalamak ve script'in beklendiği gibi çalışmasını sağlamak için çeşitli mekanizmalar mevcuttur.

  • set -e: Bir komut hata döndürdüğünde script'in hemen çıkmasını sağlar.
  • set -u: Tanımlanmamış değişkenlerin kullanılmasını engeller.
  • set -o pipefail: Pipe (boru) hattındaki herhangi bir komut hata döndürürse, tüm hattın hata döndürmesini sağlar.
#!/bin/bash
set -euo pipefail

# Bu komut başarısız olursa script duracaktır.
ls /nonexistent_directory

# Bu değişken tanımlı değilse script duracaktır.
echo "Değer: $UNDEFINED_VARIABLE"

# Pipe hattındaki hata yakalanacaktır.
df -h | grep "/dev/sda1" | awk '{print $5}' # Eğer grep bir şey bulamazsa pipefail bunu yakalar.

Dinamik Dosya İşlemleri ve Metin Manipülasyonu

Log dosyalarını işlemek, yapılandırma dosyalarını güncellemek veya verileri analiz etmek sık karşılaşılan görevlerdir. awk, sed ve grep gibi araçlar, metin işleme konusunda güçlü yetenekler sunar.

# Belirli bir log dosyasındaki hataları ayıklama ve sayma
LOG_FILE="/var/log/syslog"
ERROR_COUNT=$(grep -i "error" "$LOG_FILE" | wc -l)

echo "'$LOG_FILE' dosyasında $ERROR_COUNT adet hata bulundu."

# Bir yapılandırma dosyasındaki değeri dinamik olarak değiştirme
CONFIG_FILE="/etc/myapp/config.conf"
NEW_PORT="8080"

sed -i "s/^PORT=.*/PORT=$NEW_PORT/" "$CONFIG_FILE"

Gerçek Production Senaryosu: AWS EC2 Instance Durum Kontrolü ve Bildirim

Bir sistem yöneticisi olarak, kritik AWS EC2 instance'larınızın durumunu sürekli izlemeniz gerekir. Bu script, EC2 instance'larının durumunu kontrol eder ve herhangi bir sorun olduğunda bir SNS konusuna bildirim gönderir.

#!/bin/bash

# AWS CLI yapılandırması gereklidir.
# AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY ve AWS_DEFAULT_REGION ayarlanmış olmalı.

INSTANCE_ID="i-0123456789abcdef0"
SNS_TOPIC_ARN="arn:aws:sns:us-east-1:123456789012:MyInstanceAlerts"

# EC2 instance durumunu al
INSTANCE_STATUS=$(aws ec2 describe-instance-status --instance-ids "$INSTANCE_ID" --query 'InstanceStatuses[0].InstanceStatus.Status' --output text)

# Durum kontrolü
if [ "$INSTANCE_STATUS" != "ok" ]; then
  MESSAGE="EC2 Instance '$INSTANCE_ID' durumu '$INSTANCE_STATUS'. Lütfen kontrol edin."
  echo "$MESSAGE"
  # SNS'ye bildirim gönder
  aws sns publish --topic-arn "$SNS_TOPIC_ARN" --message "$MESSAGE" --subject "EC2 Instance Uyarı: $INSTANCE_ID"
else
  echo "EC2 Instance '$INSTANCE_ID' durumu 'ok'."
fi

Bu script, aws ec2 describe-instance-status komutunu kullanarak belirtilen EC2 instance'ının durumunu alır. Durum 'ok' değilse, bir hata mesajı oluşturulur ve AWS Simple Notification Service (SNS) aracılığıyla belirtilen konuya gönderilir. Bu, proaktif uyarılar almanızı sağlar.

Sonuç

Bash scripting, doğru kullanıldığında sistem yönetiminin vazgeçilmez bir aracıdır. Fonksiyonlar, hata yönetimi ve güçlü metin işleme araçları ile daha karmaşık ve güvenilir script'ler yazarak operasyonel verimliliğinizi maksimize edebilirsiniz. Üretim senaryolarına yönelik çözümler geliştirmek, bu becerileri pratik uygulamalarla pekiştirmenin en iyi yoludur.

← Blog Listesine Dön