PowerShell ile Iphone’a Bildirim Gönderin!

         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.

clip_image001clip_image003

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.

clip_image005clip_image007

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.

clip_image009

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.

clip_image011                                                                            clip_image013

 

 

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.

clip_image015

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:ProwlProwl.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:WindowsSystem32WindowsPowerShellv1.0 altında Profile.ps1 dosyanız bulunur.Bu dosyayı editleyerek yukarıda kendinize göre düzenlendiğiniz fonksiyonu yapıştırarak kaydedelim.

clip_image017

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

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

clip_image018

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ı.

clip_image020

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:ProwlProwl.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:

clip_image022 clip_image023

 

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.

clip_image025

 

 

 

 

 

 

 

 

 

 

 

 

 

———

 

 

 

 

 

 

 

 

 

 

3 thoughts on “PowerShell ile Iphone’a Bildirim Gönderin!

Leave a Reply

Your email address will not be published. Required fields are marked *

+ 47 = 54