4

PowerShell sayesinde bir System admini olmanıza rağmen içinizdeki yazılımcı ruhunu ortaya çıkarabilirsiniz.Bende Infrastructure üzerinde uzmanlaşmış bir IT Pro olmama rağmen , powershell ile küçüklü büyüklü birçok script geliştirdim.Bunların kimisi , gerçekten işe yarayan uygulamalardı, kimisi ise sadece “PowerShell bunu da yapabilirmi?” sorusuna aradığım cevapların neticesinde ortaya çıkan , belkide hiç kullanmayacağım ufak scriptlerdi.

Ancak sanırım bu makale serisinde bahsedeceğim powershell fonksiyonları, her sistem adminin kullanabileceği, tamamen hayal gücünüzle sınırlı sayıda varyasyonunu üretebileceğiniz bir yapıya sahip.

Makalemizin ilk bölümünde bu fonksiyonun arka planından bahsederek bir vizyon çizeceğim.İlerleyen bölümlerde ise gerek sizlerden gelen dönütlerle, gerekse kendi fikirlerim doğrultusunda , bu fonksiyonu kullanarak neler yapabiliriz bunu inceleyeceğiz.

Iphone kullananların bildiği gibi, Iphone işletim sistem (IOS) üzerinde bir “Push Notification” mekanizması bulunuyor.Bunu en iyi mail client yazılımında görüyoruz.Bu Push Notification Service sayesinde belirli uyarıları Iphone ekranında, tamamen uyarıyı gönderen source tabanlı customize edilmiş şekilde görebilirsiniz.


Resim 1


Resim 2

Yukarıdaki örnekte 3rd party bir kaynaktan gelen notification bilgisinin Iphone ekranında “Always On Top” şeklinde nasıl geldiğini görüyoruz.

IOS 3.0 ve üzerinde Iphone, Ipad ve Ipod Touch cihazlarda çalışan Notification Servisi Wi-fi yada Edge/3g bağlantısının olduğu her noktada available durumdadır.Aynı şekilde source üzerinden gelen bilgiye göre size sadece ekranda bir uyarı yada çalan zil sesi şeklinde görünebilir.

Peki PowerShell ile Iphone üzerindeki Push Notification servisinin nasıl bir ilgisi olabilir ?

Eminim bir çoğunuzun kafasında benzer fikirler ortaya çıkmaya başlamıştır. PowerShell ile Iphone üzerindeki Push Notification servisini tetikleyebilirmiyim?

İlk bakışta eğer bunu yapabilseydik ne gibi powershell uygulamaları ortaya çıkarabilirdik bakalım:

–          Herhangi bir sunucu üzerinde belirli bir servis durduğunda, ilgili sunucu ipsi, servisin adı, tarih gibi bilgiler dahil dünyanın herhangi bir yerinde Iphone ekranında bu bilgiyi görebilirdik.

–          Herhangi bir sunucu üzerinde bir process başlasaydı yada dursaydı, bununla ilgili uyarıyı Iphone ekranından alabilirdik.

–          Lokal makinanız logoff durumdayken, birisi oturum açmaya çalıştığında ve başarısız olduğunda , siz yan odada olsanız dahi bu bilgi sizin Iphone ekranınıza yansıyabilirdi.

–          Herhangi bir backup yada restore işlemini başlattığınızda durum raporunu , başarılı yada başarısız şeklinde görebilirdik.

–          Evinizdeki dış kapınız siz evde yokken açıldığında bu bilgiyi anında telefonunuzda görebilirdiniz !

Son örnek size uçuk gelebilir, ama böyle bir uygulamanın ortaya çıkarılmasında hiçbir engel yok.

Peki PowerShell ile Iphone üzerindeki Push Notification servisi arasındaki bağlantıyı nasıl sağlayacağız? Bunun için hazırlanmış, gerekli API’yi size sağlayan , Apple Store üzerinden yalnızca 2,99 dolarak indirebileceğiniz Prowl isminde bir uygulama mevcut.

Bu uygulamayı Iphone telefonunuza kurduğunuzda, size sağlanan API anahtarı ile birlikte dünya üzerindeki internete bağlı herhangi bir bilgisayardaki powershell fonksiyonunu kullanarak notification’ı tetikleme şansınız bulunuyor.

Düğündüğünüz gibi bu kadar basit.

Şimdi gelelim yapmamız gereken konfigurasyonlara ve örnek bir uygulamaya.

Iphone üzerinden App Store’a girerek Prowl şeklinde bir arama gerçekleştirdiğiniz takdirde, ilgili uygulamayı sadece 2,99 dolar gibi bir ücret ile download edip kurabilirsiniz.


Resim 3


Resim 4

Yukarıdaki resimlerde, kendi telefonumda AppStore içerisinde Prowl şeklinde arama gerçekleştirip 2,99 dolara download işlemini başlatıyorum.

Download işlemi tamamlandıktan sonra Iphone üzerinde ilgili application’ı açmadan önce, üretici firma sitesi üzerinden çok basit ücretsiz bir registration işlemi gerçekleştirmeniz gerekiyor.

Bunun için https://www.prowlapp.com/register.php adresinde aşağıdaki formu doldurmanız yeterli.


Resim 5

Ardından Iphone üzerinden ilgili uygulamayı çalıştırdığınızda username ve password bilgisini girerek logon olabilirsiniz.

Iphone üzerindeki uygulamada varsayılan ayarlarda bir değişiklik yapmak zorunda değilsiniz.Yalnızca notification tipini değiştirebilir, zil sesi olarak farklı melodiler kullanabilirsiniz.


Resim 6


Resim 7

Aslında programı kurup logon işlemini gerçekleştirdikten sonra, sizin kullanıcı adınıza özel API anahtarı ile bir notification geldiği takdirde, ekranda göstermeye hazır vaziyette bulunuyor.

Bu noktadan sonra yapmanız gereken, uygulamalarınızda kullanabileceğiniz API anahtarını oluşturmak.Bu konfigurasyon için https://www.prowlapp.com/api_settings.php adresine gidip yeni bir API isteğinde bulunmanız yeterlidir.


Resim 8

API KEY bölümündeki anahtarı bir yere not ettikten sonra son yapmanız gereken, powershell scripti içerisinde işlerinizi kolaylaştıracak olan ufak bir dll dosyasını, scripti çalıştıracağınız pc üzerine kaydetmek.

http://prowldotnet.codeplex.com/releases/view/33426 adresindeki Prowl.dll dosyasını C dizini altında Prowl isimli bir klasör oluşturarak altına kopyalayalım.

Artık bu API anahtarını ve dll’i kullanarak Iphone üzerine notification gönderebilme yeteneğine sahip bir powershell fonksiyonu oluşturabiliriz.

function Iphone-Uyari

{ param($Description=”Iphone Uyari Bilgisidir”, $priority=”High”)

[Reflection.Assembly]::LoadFile(“C:\Prowl\Prowl.dll”)

$prowlclientconfig = New-Object prowl.ProwlClientConfiguration

$prowlclientconfig.ApiKeychain =”45f8c78d46508e4b421e5cf92b3512bdfc7eaca1”

$prowlclientconfig.ApplicationName = “Iphone Uyari”

$prowlclient = New-Object prowl.ProwlClient($prowlclientconfig)

$prowlnotification = New-Object Prowl.ProwlNotification

$prowlnotification.Event = “PowerShell Uyarısı”

$prowlnotification.Priority = $priority

$prowlnotification.Description = $description

$prowlclient.PostNotification($prowlnotification)

}

Fonksiyon gördüğünüz gibi oldukça basit.

Param ile iki adet parametre ekliyoruz scriptimize.Böylece ileride fonksiyonu çağırırken –Description ve –priority parametrelerini kullanarak giden mesajı customize edebiliriz.

LoadFile ile biraz önce yüklediğimiz dll dosyasının lokasyonunu belirliyoruz.

ApiKey kısmına site üzerinden size verilen API anahtarını yazıyorsunuz.

Application Name ve Event kısımlarını, mesajın başlığında görünecek text olduğu için yapınıza göre aynı şekilde düzenleyebilirsiniz.

Bu örnek bir fonksiyon.Buna farklı parametreler ekleyerek tamamen size özel hale getirebilme şansınız bulunuyor.

Artık elinizde Iphone üzerine Notification gönderebilen bir fonksiyonunuz var.Peki bu fonksiyonu her seferinde nasıl çağıracaksınız ?

Bunu daha önceki yazılarımızda da incelemiştik.Eğer her powershell penceresinde bu fonksiyonun önceden yüklü gelmesini istiyorsanız yapmanız gereken profile.ps1 dosyanızı güncellemek.

Varsayılan olarak C:\Windows\System32\WindowsPowerShell\v1.0 altında Profile.ps1 dosyanız bulunur.Bu dosyayı editleyerek yukarıda kendinize göre düzenlendiğiniz fonksiyonu yapıştırarak kaydedelim.


Resim 9

Artık yeni bir PowerShell konsolu açarak fonksiyonumuzu test edebiliriz.

Yeni açılan konsolda fonksiyon ismini çağırmanız yeterlidir.


Resim 10

Gördüğünüz gibi sadece Iphone-Uyari komutunu çalıştırdım.Komutu çalıştırır çalıştırmaz, kilitli durumda olan Iphone’umun ekranında aşağıdaki gibi bir pencere açıldı.


Resim 11

Gördüğünüz gibi, dünya üzerinde herhangi bir yerden sizin fonksiyonunuz çalıştırıldığı anda, Iphone ekranınıza varsayılan mesajınız düşüyor.

İşte bu noktadan sonra yapılabilecekler sizin hayal gücünüz ile sınırlı.Yukarıdaki örneklerden ilkini kendi bilgisayarımda denedim ve harika sonuçlar elde ettim.

Şimdi hazırlayacağım basit bir script ile makinem üzerinde bulunan bir servisin durumunu kontrol edeceğim.Eğer bu servisin durumu stopped hale geçerse, Iphone-Uyarı fonksiyonumu çalıştıracağım ve duran servis bilgisini telefonuma göndereceğim.

function Iphone-Uyari

{ param($Description=”Iphone Uyari Bilgisidir”, $priority=”High”)

[Reflection.Assembly]::LoadFile(“C:\Prowl\Prowl.dll”)

$prowlclientconfig = New-Object prowl.ProwlClientConfiguration

$prowlclientconfig.ApiKeychain =”24f8c78d47f08e4b41ce5cf92be112bdfc7eaca1”

$prowlclientconfig.ApplicationName = “Iphone Uyari”

$prowlclient = New-Object prowl.ProwlClient($prowlclientconfig)

$prowlnotification = New-Object Prowl.ProwlNotification

$prowlnotification.Event = $sunucuismi

$prowlnotification.Priority = $priority

$prowlnotification.Description = $description

$prowlclient.PostNotification($prowlnotification)

}

$Status = 0

$sunucuismi = hostname

Do {

$Service = get-service “spooler”

if ($Service.status -eq “Running”) {

Write-Host “”

} else {

Iphone-Uyari -description “Dikkat! $sunucuismi makinesinde Spooler servisi durmuştur.”

}

Start-Sleep 60

} Until ($Status -eq 1)

Yukarıdaki script içerisinde biraz önce oluşturduğumuz fonksiyonu yerleştirdim.Ardından bir loop oluşturarak Spooler servisinin durumunun sürekli gözlemlenmesini, eğer çalışıyorsa bir aksiyon alınmamasını (aslında konsola boş bir değer yazılmasını) ancak stop haline geçtiği anda Iphone’uma ilgili makine ismi değişkeninide kullanarak uyarı göndermesini sağladım.

En güzel tarafı ise bu loop kendini servis durumu tekrardan started olana kadar 60 saniyede bir tekrar ederek uyarı göndermeye devam edecektir.

Ne zaman ki, servisi başlatırsınız, o zaman uyarılar kesilerek standart kontrol mekanizması çalışmaya devam edecektir.

Tek yapmanız gereken sunucu üzerinde yukarıdaki scripti notepad’e yazarak ps1 uzantısı ile kaydetmeniz,çalıştırıp, arka planda çalışır vaziyette bırakmanız.

Script çalışırken servisi stop ettiğim anda Iphone’uma düşen uyarılar:


Resim 12


Resim 13


Resim 14

Gördüğünüz gibi çok ufak bir script ile, cep telefonumdan istediğim sunucuların anlık servis durum bilgilerini alabileceğim bir yapıya kavuştum.

İlerleyen makalelerimizde bu örneklerimizi çeşitlendirerek, çok daha hoş kullanım alanlarına hitap eden ufak fonksiyonlar yayınlamaya devam edeceğim.

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

Bu İçeriğe Tepkin Ne Oldu?
  • 1
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

İstanbul doğumlu ve Marmara Üniversitesi mezunudur. Mezuniyet sonrası kariyerine Bilge Adam Bilişim Teknolojileri Akademisi'nde Microsoft Certificated Trainer, Consultant ve Senior Consultant pozisyonlarında ve Data Market bünyesinde Danışmanlık Birim Müdürü olarak görev yapmaya başlamıştır. Microsoft bünyesinde tüm MEA bölgesindeki ülkelerde System Center ve Infrastructure projelerinden sorumlu Consultant olarak görev yaptıktan sonra, Aralık 2012 itibari ile KoçSistem bünyesinde danışman olarak çalışmaya başlamıştır. System Center Configuration Manager ürünü için 2010 ve 2011 yıllarında MVP (Microsoft Most Valuable Professional) ünvanı alan Anıl Erduran, 2013 yılında System Center Cloud & Datacenter Management alanında MVP seçilmiş ve uzun yıllar bu ünvanı korumayı başarmıştır. Şu anda Londra'da yaşayan Anıl Erduran AWS üzerinde çalışan Microsoft iş yüklerinden sorumlu EMEA Senior Partner Solutions Architect olarak çalışmaktadır.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

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

Yorumlar (4)

  1. ellerine sağlık anıl. çok güzel ve faydalı bir yazı olmuş. serinin devamını merakla bekliyorum….

  2. Mrb LoadFile ile biraz önce yüklediğimiz dll dosyasının lokasyonunu belirliyoruz. dediğiniz kısımı nerde

  3. daha değişik paylaşımlarınızı bekliyoruz..

    özellikle her hangi bir internet sitesinin güncellemelerinde iphone a uyarı mesajı gelmesi gibi..

    çok teşekkürler…

  4. 14/04/2015

    powershell in uzantısı ne?

Bir yanıt yazın

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