Kurumsal BT’de Otomasyon: Bash ve PowerShell ile Tekrarlayan İşleri Azaltmak

Kurumsal yapılarda BT ekiplerinin günlük işlerinin önemli bir bölümü aslında birbirini tekrar eden işlemlerden oluşur. Bir uygulamanın kurulması, belirli bir dosyanın bilgisayarlara dağıtılması, servislerin kontrol edilmesi, kullanıcı hesaplarının hazırlanması veya cihaz bilgilerinin toplanması gibi işlemler tek bir bilgisayarda çok fazla zaman almayabilir.

Ancak yüzlerce veya binlerce bilgisayarın bulunduğu bir yapıda aynı işlemlerin manuel olarak gerçekleştirilmesi ciddi bir iş yükü oluşturur.

Tam olarak bu noktada BT otomasyonu devreye girer.

Linux sistemlerde Bash, Windows sistemlerde ise PowerShell kullanarak günlük sistem yönetimi operasyonlarının büyük bir bölümünü otomatik hale getirmek mümkündür.

Bu yazıda kurumsal BT otomasyonunun ne olduğunu, neden önemli olduğunu ve Bash ile PowerShell kullanarak nasıl uygulanabileceğini detaylı şekilde ele alacağım.


BT Otomasyonu Nedir?

BT otomasyonu, normalde sistem yöneticileri veya teknik destek ekipleri tarafından manuel olarak gerçekleştirilen işlemlerin scriptler, merkezi yönetim sistemleri veya çeşitli yazılım araçları kullanılarak otomatik hale getirilmesidir.

Örneğin bir sistem yöneticisinin 200 bilgisayarda belirli bir dosyayı güncellemesi gerektiğini düşünelim.

Manuel yöntemde her bilgisayara bağlanmak, eski dosyayı kontrol etmek, yeni dosyayı kopyalamak ve işlemin başarılı olup olmadığını doğrulamak gerekir.

Otomasyon kullanıldığında ise bütün bu süreç tek bir script ile gerçekleştirilebilir.

Temel yaklaşım aslında oldukça basittir:

Tekrar eden bir işlem varsa, o işlem otomasyona adaydır.

Kurumsal ortamlarda otomasyona uygun işlemlerden bazıları şunlardır:

  • Yazılım kurulumu

  • Yazılım kaldırma

  • Dosya dağıtımı

  • Dosya güncelleme

  • Servis kontrolü

  • Servis yeniden başlatma

  • Kullanıcı oluşturma

  • Kullanıcı bilgisi toplama

  • Bilgisayar envanteri çıkarma

  • Log temizleme

  • Disk alanı kontrolü

  • Ağ bağlantısı kontrolü

  • Uygulama sürümü kontrolü

  • Uzak bilgisayarlarda komut çalıştırma

Buradaki amaç sadece daha hızlı işlem yapmak değildir.

Asıl amaç, standart, kontrol edilebilir ve tekrar edilebilir bir BT operasyonu oluşturmaktır.


Manuel Sistem Yönetimi Neden Ölçeklenemez?

Küçük bir işletmede 10 veya 20 bilgisayar bulunuyorsa bazı işlemler manuel olarak gerçekleştirilebilir.

Fakat cihaz sayısı büyüdükçe sistem yönetimi tamamen farklı bir noktaya gelir.

Örneğin 500 bilgisayarda yapılması gereken bir işlem olduğunu düşünelim.

Her bilgisayardaki işlem yalnızca 5 dakika sürse:

500 × 5 dakika = 2.500 dakika

Bu da yaklaşık 41 saatlik çalışma anlamına gelir.

Üstelik burada yalnızca işlem süresini hesaplıyoruz.

Bilgisayara bağlantı kurulması, bağlantı problemleri, kullanıcı beklenmesi, hata kontrolü ve raporlama gibi süreçler dahil edildiğinde gerçek süre çok daha fazla olabilir.

Otomasyon sayesinde aynı operasyon merkezi olarak gerçekleştirilebilir.

Böylece BT ekipleri zamanlarını sürekli tekrar eden operasyonlar yerine daha önemli problemlere ayırabilir.


Otomasyon İnsan Hatasını Azaltır

Manuel operasyonların başka bir problemi de insan hatasıdır.

Örneğin bir teknisyen:

  • Yanlış dosyayı kopyalayabilir,

  • Eski uygulama sürümünü kurabilir,

  • Yanlış klasörde işlem yapabilir,

  • Bazı bilgisayarları atlayabilir,

  • Farklı cihazlarda farklı ayarlar uygulayabilir.

Otomasyon kullanıldığında ise aynı işlem belirlenen kurallara göre bütün sistemlerde aynı şekilde uygulanabilir.

Bu nedenle otomasyon yalnızca zaman kazandırmaz.

Aynı zamanda BT operasyonlarında standardizasyon sağlar.


Linux Sistemlerde Bash ile Otomasyon

Linux tabanlı sistemlerde otomasyon için en yaygın kullanılan araçlardan biri Bash'tir.

Bash sayesinde işletim sistemi üzerinde gerçekleştirilen birçok işlem script haline getirilebilir.

Örneğin bir bilgisayarda Firefox'un kurulu olup olmadığını kontrol etmek için:

#!/bin/bash

if command -v firefox >/dev/null 2>&1
then
    echo "Firefox kurulu."
else
    echo "Firefox kurulu değil."
fi

Bu oldukça basit bir örnek olsa da aynı mantık kurumsal operasyonlarda çok daha kapsamlı şekilde kullanılabilir.

Örneğin script önce uygulamanın kurulu olup olmadığını kontrol eder, daha sonra kurulu değilse kurulumu başlatabilir.

#!/bin/bash

if command -v nginx >/dev/null 2>&1
then
    echo "Nginx zaten kurulu."
else
    echo "Nginx kuruluyor..."

    apt update
    apt install nginx -y
fi

Burada önemli bir nokta vardır.

Script uygulamayı doğrudan tekrar tekrar kurmaya çalışmaz.

Önce sistemin mevcut durumunu kontrol eder.

Bu yaklaşım otomasyon sistemlerinde oldukça önemlidir.


Linux Servis Kontrolü

Kurumsal ortamlarda servislerin çalışıp çalışmadığını kontrol etmek sık yapılan işlemlerden biridir.

Örneğin Nginx servisini kontrol edebiliriz.

#!/bin/bash

if systemctl is-active --quiet nginx
then
    echo "Nginx servisi çalışıyor."
else
    echo "Nginx servisi çalışmıyor."

    systemctl restart nginx
fi

Bu script önce servisin durumunu kontrol eder.

Servis çalışıyorsa herhangi bir işlem yapmaz.

Çalışmıyorsa servisi yeniden başlatır.

Bu tür scriptler özellikle çok sayıda Linux cihazın bulunduğu ortamlarda oldukça kullanışlıdır.


Windows Sistemlerde PowerShell Otomasyonu

Windows sistem yönetimi tarafında ise PowerShell oldukça güçlü bir otomasyon aracıdır.

PowerShell yalnızca komut çalıştırmak için kullanılan bir terminal değildir.

Windows sistem bileşenlerinin büyük bölümü PowerShell üzerinden yönetilebilir.

Örneğin çalışan servisleri görüntülemek için:

Get-Service

Belirli bir servisin durumunu kontrol etmek için:

Get-Service -Name "Spooler"

Servis çalışmıyorsa otomatik olarak başlatabiliriz.

$service = Get-Service -Name "Spooler"

if ($service.Status -ne "Running") {

    Start-Service -Name "Spooler"

    Write-Host "Spooler servisi başlatıldı."

}
else {

    Write-Host "Spooler servisi zaten çalışıyor."

}

Böylece kullanıcıdan gelen basit bir yazdırma servisi problemi için manuel müdahale ihtiyacı azaltılabilir.


Dosya Dağıtımını Otomatikleştirmek

Kurumsal BT ortamlarında en sık karşılaşılan işlemlerden biri dosya dağıtımıdır.

Örneğin belirli bir uygulamanın JAR, EXE, DLL veya konfigürasyon dosyasının bilgisayarlarda güncellenmesi gerekebilir.

Linux tarafında:

cp /tmp/application.jar /opt/application/application.jar

Windows PowerShell tarafında:

Copy-Item `
-Path "\\sunucu\paylasim\application.exe" `
-Destination "C:\Application\application.exe" `
-Force

Ancak üretim ortamında yalnızca dosyayı kopyalamak yeterli değildir.

Daha güvenli bir script şu adımları uygulamalıdır:

  1. Dosyanın mevcut olup olmadığını kontrol etmek

  2. Eski dosyanın sürümünü kontrol etmek

  3. Gerekirse eski dosyayı yedeklemek

  4. Yeni dosyayı kopyalamak

  5. Dosyanın doğru şekilde kopyalandığını doğrulamak

  6. İşlem sonucunu loglamak

Otomasyonun güvenilir hale gelmesini sağlayan asıl unsur bu kontrollerdir.


Log Tutmak Neden Önemlidir?

Kurumsal bir ortamda scriptin yalnızca çalışması yeterli değildir.

Ne yaptığının da bilinmesi gerekir.

Örneğin Linux tarafında:

LOG="/var/log/company-automation.log"

echo "$(date) - Güncelleme başladı." >> "$LOG"

cp /tmp/application.jar /opt/application/application.jar

if [ $? -eq 0 ]
then
    echo "$(date) - Dosya başarıyla güncellendi." >> "$LOG"
else
    echo "$(date) - Dosya güncellenemedi." >> "$LOG"
fi

Windows tarafında ise:

$LogFile = "C:\Logs\automation.log"

Add-Content `
-Path $LogFile `
-Value "$(Get-Date) - Güncelleme başladı."

Log mekanizması sayesinde ileride oluşabilecek problemlerde:

  • Script çalışmış mı?

  • Hangi saatte çalışmış?

  • Hata meydana gelmiş mi?

  • İşlem başarılı olmuş mu?

gibi soruların cevabı kolaylıkla bulunabilir.


Hata Kontrolü Olmadan Otomasyon Eksiktir

Hazırlanan scriptlerin yalnızca başarılı senaryoya göre tasarlanması önemli bir hatadır.

Örneğin internet üzerinden bir dosya indirdiğimizi düşünelim.

wget https://example.com/application.deb

Bu komut normal şartlarda dosyayı indirir.

Peki internet bağlantısı yoksa?

Sunucu cevap vermiyorsa?

Dosya kaldırılmışsa?

Diskte yeterli alan yoksa?

Bu nedenle otomasyon scriptlerinde hata kontrolü bulunmalıdır.

Örneğin:

if wget https://example.com/application.deb
then
    echo "Dosya başarıyla indirildi."
else
    echo "Dosya indirilemedi."
    exit 1
fi

Script hata oluştuğunda kontrolsüz şekilde devam etmek yerine işlemi durdurur.

Kurumsal otomasyonda bu yaklaşım büyük önem taşır.


Idempotent Script Nedir?

Otomasyon dünyasında önemli kavramlardan biri idempotency kavramıdır.

Basit şekilde ifade etmek gerekirse:

Bir script aynı bilgisayarda birden fazla defa çalıştırıldığında sistemi bozmamalıdır.

Örneğin bir klasör oluşturmak istiyoruz.

Şöyle yazabiliriz:

mkdir /opt/company

Ancak klasör zaten mevcutsa hata oluşabilir.

Daha güvenli kullanım:

mkdir -p /opt/company

Bu komut klasör mevcut olsa bile problem oluşturmaz.

Benzer şekilde bir uygulama kurulacaksa script önce uygulamanın mevcut olup olmadığını kontrol etmelidir.

Bu yaklaşım özellikle merkezi yönetim sistemlerinden script dağıtılırken oldukça önemlidir.

Çünkü aynı script yanlışlıkla ikinci kez çalıştırılabilir.


Envanter Toplama da Otomatikleştirilebilir

Otomasyon yalnızca sistem üzerinde değişiklik yapmak için kullanılmaz.

Bilgi toplamak için de kullanılabilir.

Örneğin bir cihazdan şu bilgiler otomatik olarak alınabilir:

  • Bilgisayar adı

  • Kullanıcı adı

  • IP adresi

  • MAC adresi

  • İşletim sistemi

  • RAM

  • CPU

  • Disk bilgisi

  • Seri numarası

  • Kurulu uygulamalar

Linux üzerinde seri numarası:

dmidecode -s system-serial-number

Bilgisayar adı:

hostname

IP adresi:

hostname -I

Windows PowerShell üzerinde bilgisayar seri numarası:

Get-CimInstance Win32_BIOS |
Select-Object SerialNumber

Bilgisayar bilgileri:

Get-ComputerInfo

Bu bilgiler daha sonra merkezi bir sunucuya gönderilebilir.


Script + API + Veritabanı

BT otomasyonunun daha gelişmiş hali scriptlerin merkezi bir sisteme bağlanmasıdır.

Örneğin yapı şu şekilde olabilir:

Bilgisayar
     ↓
Bash / PowerShell
     ↓
REST API
     ↓
Backend
     ↓
Veritabanı
     ↓
Web Yönetim Paneli

Bilgisayardaki script cihaz bilgilerini toplar.

Ardından bu bilgiler REST API üzerinden merkezi sunucuya gönderilir.

Sunucu tarafında:

  • Python

  • PHP

  • Node.js

  • Java

gibi teknolojiler kullanılabilir.

Veriler ise:

  • MySQL

  • PostgreSQL

  • MongoDB

gibi veritabanlarında tutulabilir.

Bu yapıyla zaman içerisinde tamamen kuruma özel bir BT yönetim sistemi oluşturmak mümkündür.


Merkezi Yönetim Sistemleriyle Birleştirmek

Bash ve PowerShell scriptlerinin gerçek gücü merkezi cihaz yönetim sistemleriyle birlikte kullanıldığında ortaya çıkar.

Bir endpoint management sistemi üzerinden:

  • 500 bilgisayara script göndermek,

  • Yazılım yüklemek,

  • Yazılım kaldırmak,

  • Servis kontrol etmek,

  • Dosya dağıtmak,

  • Sistem bilgisi toplamak,

mümkün hale gelir.

Bu durumda sistem yöneticisinin her bilgisayara ayrı ayrı bağlanması gerekmez.

Script merkezi panelden gönderilir ve cihazlarda otomatik olarak çalıştırılır.


Üretim Ortamında Otomasyon Nasıl Uygulanmalı?

Hazırlanan bir script doğrudan yüzlerce bilgisayara gönderilmemelidir.

Daha güvenli yaklaşım aşamalı dağıtımdır.

Örneğin:

1. Geliştirme ortamı

Script ilk olarak geliştiricinin test bilgisayarında çalıştırılır.

2. Test cihazları

Gerçek sisteme benzeyen birkaç cihaz üzerinde test edilir.

3. Pilot kullanıcı grubu

5-10 bilgisayarda çalıştırılarak gerçek kullanıcı senaryosu gözlemlenir.

4. Kademeli dağıtım

Örneğin önce 50, ardından 100 cihazda çalıştırılır.

5. Genel dağıtım

Sorun görülmüyorsa bütün sisteme uygulanır.

Bu yöntem olası bir hatanın yüzlerce bilgisayarı aynı anda etkilemesini önler.


Otomasyon Her Şeyi Çözmez

Otomasyon güçlü bir araçtır fakat kontrolsüz otomasyon ciddi problemlere neden olabilir.

Yanlış hazırlanmış bir script aynı hatayı birkaç saniye içerisinde yüzlerce bilgisayara uygulayabilir.

Özellikle aşağıdaki komutların kullanıldığı scriptlerde ekstra dikkat gerekir:

rm -rf

veya:

Remove-Item -Recurse -Force

Dosya silme, kullanıcı silme, servis kapatma veya sistem ayarı değiştirme işlemlerinde mutlaka doğrulama mekanizmaları kullanılmalıdır.

Bu nedenle kurumsal otomasyonun temel prensibi şu olmalıdır:

Önce kontrol et, sonra işlem yap ve sonucu mutlaka kaydet.


Sonuç

Modern BT altyapılarında yalnızca problemi çözmek yeterli değildir.

Önemli olan aynı problemin tekrar ortaya çıktığında tekrar manuel müdahale gerektirmemesidir.

Bu nedenle otomasyon günümüzde sistem yöneticiliğinin önemli parçalarından biri haline gelmiştir.

Linux sistemlerde Bash, Windows sistemlerde PowerShell kullanılarak günlük operasyonların önemli bir bölümü otomatik hale getirilebilir.

Doğru tasarlanmış bir otomasyon sistemi:

  • BT ekiplerinin iş yükünü azaltır,

  • Operasyon sürelerini kısaltır,

  • İnsan hatasını azaltır,

  • Standart sistem yönetimi sağlar,

  • Müdahale süresini düşürür,

  • Merkezi yönetimi kolaylaştırır,

  • Büyük cihaz parklarının yönetimini daha sürdürülebilir hale getirir.

Özellikle sistem yönetimi ile yazılım geliştirme becerilerinin birleştiği noktada otomasyon çok daha güçlü hale gelir.

Bir sistem yöneticisinin yalnızca sistemi yönetmesi değil, gerektiğinde o sistemi yönetecek araçları ve scriptleri geliştirebilmesi günümüz BT dünyasında önemli bir avantajdır.

Ve çoğu zaman iyi bir otomasyon fikri oldukça basit bir soruyla başlar:

“Ben bu işlemi sürekli yapıyorsam, bunu neden bilgisayar benim yerime yapmasın?”