Windows Server Sunucuları Arasında Network Hattını Kontrol Etmek

Bu makalede sunucularımız arasında network bağlantısının sürekli bir birleriyle erişim olup olmadığını ve sunucular arasında herhangi bir bağlantı kopukluğu olup olmadığını görmüş olacağız. Bunun için aşağıdaki power shell script’i kullanılmaktadır. İlk script kaydedildikten sonra Task Scheduler aracılığı ile sürekli çalışmasını sağlamış olacağız. Makalenin sonunda yine Task Scheduler yardımıyla ile ilgili klasör altında belirli bir günden öncede txt kayıtlarını silmiş olacağız.

İlk olarak powershell panel windows arama yerinden aranıp yönetici olarak çalıştırılması gerekmektedir.

Gelen powershell ekranında aşağıdaki komut test işlemi için çalıştırılır. Test yaptıktan sonra ilgili scripti Bilgisayarınız üzerinde hangi disk boyut bakımından müsaitse ilgili diske kaydedilir.

Aşağıdaki scriptte önemli olan iki kısım target server kısmında hedef sunucunun ip adresi veya hedef sunucu ip adresinin yazılması gerekmektedir. $logFile kısmında ise ilgili log kayıtlarının kaydedileceği dizini belirtmemiz gerekmektedir.

# Değişkenler
$targetServer = "ServerName or IP address" 
$pingInterval = 1  # Ping aralığı saniye cinsinden
$duration = (23 * 60 * 60) + (59 * 60)  # 23 saat 59 dakika süre saniye cinsinden
$endTime = (Get-Date).AddSeconds($duration)  # Bitiş zamanı
$date = Get-Date -Format "yyyy-MM-dd"
$logFile = "C:\PING\$date.txt" 

# Sayaçlar
$successCount = 0
$failureCount = 0
$totalPingCount = 0

# Ping döngüsü
while ((Get-Date) -lt $endTime) {
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    
    # Ping işlemi
    $pingResult = Test-Connection -ComputerName $targetServer -Count 1 -Quiet
    $totalPingCount++
    
    if ($pingResult) {
        $output = "$timestamp - Ping to $targetServer succeeded."
        $successCount++
    } else {
        $output = "$timestamp - Ping to $targetServer failed."
        $failureCount++
    }
    
    # Sonucu log dosyasına yazdırma
    $output | Out-File -FilePath $logFile -Append
    
    # Bir sonraki ping için bekleme
    Start-Sleep -Seconds $pingInterval
}

# Sonuçların hesaplanması
$failurePercentage = 0
if ($totalPingCount -ne 0) {
    $failurePercentage = ($failureCount / $totalPingCount) * 100
}

# Toplam sonuçların log dosyasına yazdırılması
$summary = @"
Toplam Ping Sayısı: $totalPingCount
Başarılı Ping Sayısı: $successCount
Başarısız Ping Sayısı: $failureCount
Başarısız Ping Yüzdesi: $([math]::Round($failurePercentage, 2))%
"@
$summary | Out-File -FilePath $logFile -Append

# Sonuçları Konsola Yazdırma
Write-Output "Ping işlemi tamamlandı."
Write-Output $summary

İlgili script çalıştırıldıktan sonra belirtilen dizine kaydedildiğini görmekteyiz.

Yukarıdaki çalıştırdığımız powershell scriptini kaydet butonuna tıklayıp herhangi bir dizin altına kaydediyoruz. Kaydettiğimiz bu dizin altında ilgili powershell klasörünü Task Scheduler çalıştırmış olacağız.

Dosyamızı kaydettikten sonra Windows arama yerine Task Scheduler yazılır.

Aşağıdaki bölümde elimizde bulunan Scheduler’ı görebiliriz.

Sağ tarafta bulunan Actions bölümünde Create Task.. deyip bir Task oluşturuyoruz.

Gelen ekranda General sekmesinde Name kısmında Scheduler’a bir isim veriyoruz. Alt kısımda bulunan security options kısmında Kullanıcı oturum açmışsa da açmamışsa da çalıştır seçeneğini işaretliyoruz.

İlk seçenek yalnızca kullanıcı oturum açtığında çalışır. 3. seçenek ise en yüksek ayrıcalıklarla çalıştırır.

Bu bölümde gerekli ayarlamaları yaptıktan sonra Triggers sekmesine geliyoruz. Gelen ekranda New deyip bir tetikleme zamanı belirtiyoruz. İlgili script kendi içerisinde 1 saniyede bir sürekli tetiklenir ve gün sonunda tekrardan yeni bir gün için txt kaydı oluşturması için yeni günde task tekrardan tetiklenir.

Actions kısmına gelip New deyip oluşturduğumuz powershell uzantılı dosyayı Browse.. sekmesinden seçiyoruz. Seçim yaptıktan sonra OK tuşuna basıyoruz.

Program/script kısmına powershell exe uzantısını yazmamız gerekmektedir. Add arguments kısmına kaydettiğimiz powershell scriptinin yazılması gerekmektedir.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

-File "E:\powershell\networkping_control.ps1"

OK tuşuna basarak yapılan işlemleri onaylıyorum.

Actions bölümünde işlemleri tanımladıktan sonra Conditions ve Settings kısmında herhangi bir düzenleme veya değişiklik yapmıyoruz. Aşağıdaki resimde Task’ın oluştuğunu görmekteyiz.

Daha sonra ilgili dosyanın üzerine sağ tıklayıp çalıştırıyoruz. Aşağıdaki resimde görüldüğü gibi manuel bir şekilde de çalıştırılır.

Çalıştırıldıktan sonra ping işlemlerinin powershell scriptinde belirtilen bölüme geldiğini görmüş oluyoruz.

Belirli süreden sonra ping işlemleri hergün bir txt dosyası oluşturduğu için belirli boyutlara ulaşır bunun için Task Scheduler ekranından yukarıdaki belirlediğimiz adımlarda olduğu bir bat uzantılı dosya çalıştırılarak ilgili uzantıda dosyalar belirli gün şartı belirlenerek silinebilir.

İlk başta .bat uzantılı dosyamızı oluşturuyoruz. Gerekli kod bloklarını hazırladıktan sonra masaüstünde bir not defteri açarak kodumuzu yapıştırıyoruz. 7 günden önceki txt uzantılarını silmiş olacağız.

forfiles -p "C:\PING" -s -m *.txt /D -7 /C "cmd /c del @path"

Alt altta forfiles ifadelerini çoğaltabiliriz. Yukarıda text dosyasını farklı kaydet seçeneğine tıklayıp uzantısını .bat olarak değiştiriyoruz.

Dosyamızı oluşturduktan sonra Windows arama yerine Task Scheduler yazılır. Önceki ping işlemi için oluşturduğumuz task schedulardan tek farkı zaman kavramını eklemiş olmamız.

Hergün belirli saatte çalışacak şeklinde ayarlanır.

Oluşturulmuş olan .bat uzantısı seçilmektedir. Bat uzantılarında program yazılmaz..

İlgili bat uzantısı sağ tıklayıp Run komutuyla çalıştırılır.

Bu makalede sunucular arasında belirli periyotlar ping atma işlemini ve belirli süreden sonra biriken ping dosyalarını silmiş olduk.

Başka makalede görüşmek dileğiyle..

Ey iman edenler, sabırla ve namazla yardım dileyin. Gerçekten Allah, sabredenlerle beraberdir. Bakara Suresi, 153. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir