Telegram ve Powershell ile Sistem İzleme-Part 1

Ozge Kara

Bu makalede, Telegram Bot API kullanarak telegram mesajlarını Powershell ile otomatikleştirme ve bir mesajlaşma platformunu nasıl bir izleme ve yönetim aracına dönüştürebileceğimizden bahsedeceğim.

Aslına bakarsanız telegram botları mesaj göndermekten daha fazlası için kullanılabilecek büyük bir potansiyel gösteren araçlardır. Örnek vermek gerekirse kişi sistemde gerçekleştirilmesini istediği eylemi telegram botuna göndereceği bir mesajla kolaylıkla gerçekleştirebilir. Bu durumda da yalnızca system izlemek için değil aynı zamanda system yönetimi için de basit ve hızlı bir platform sağlamaktadır.

Aslında bir çoğumuz halihazırda Powershell scriptlerini, zamanlanmış görevler tanımlayarak rapor oluşturması ve bu raporları e-posta yoluyla iletmesi için kullanmaktayız. Exchange sunucular için kullandığımız sağlık kontrollerini yapan scriptlerin çıktılarını mail yerine telegram üzerinden gönderilmesini sağlayabiliriz.

Bu makaleyi bir yazı dizisi şeklinde yayınlamayı tercih ettim, elimden geldiğince küçük parçalara bölüp sizlerle telegramın bot apisini bu işler için nasıl kullanılabileceğimizi aktarmak istiyorum.

Öncelikle telegramda nasıl bot oluşturalacağından bahsedip,powershell ile nasıl bağlantı kurulacağını göstereceğim. Sizlere de fikir vermesi açısından basit bir script ile örnek bir çalışma yapacağım.

Telegram Botu Nasıl Oluşturulur?

Yapmanız gereken ilk şey hesabınız yoksa bir telegram hesabına sahip olmaktır.

  1. Telegramda bot oluşturmak için BotFather adı verilen başka bir bot ile mesajlaşma ekranını açmanız gerekmektedir. Bunun için arama çubuğuna BotFather yazın.

Şekil 1 - Arama çubuğu

  1. Botfather ile bir mesajlaşma ekranı açtıktan sonra Start diyerek konuşmayı başlatın.

Şekil 2

  1. Yeni konuşma başladığında BotFather size yapabileceğiniz işlemlerle ilgili bir liste gösterecektir. Burada "/newbot" linkine tıklayarak ya da mesaj yazma kısmına "/newbot" komutunu yazarak yeni bir bot oluşturma işlemini başlatın.

Şekil 3

  1. Bu noktada, BotFather size botunuz için bir görünen ad tanımlamanızı isteyecektir. Görünen ad olarak istediğiniz şeyi yazmakta özgürsünüz. Bu değerin özgün olması gerekmemektedir. Örneğin ben oluşturduğum bot için "Powershell" ifadesini görünen ad olarak seçtim. Daha sonra BotFather size botunuz için bir kimlik adı seçmeniz gerektiğini söyleyecek. Bu adın özgün olması ve "_bot" ifadesi ile bitmesi gerekmektedir. Ayrıca daha sonra bu adı kullanarak botunuzu aratıp iletişimi başlatabileceksiniz.

  2. Bu işlemlerden sonra BotFather size işlemin bittiğini bildirecektir kısa bir açıklama ardından http API'yi kullanarak botunuza erişebilmeniz için gerekli token bilgisini gösterecektir. Token bilgisini powershell kodlarımızda kullanmamız gerekiyor bu nedenle kaydetmenizi tavsiye ederim.

Şekil 4

Botu Kullanarak İlk Mesajın Gönderilmesi

Telegram botu kullanarak bir kişiye mesaj gönderebilmeniz için öncelikle o kişinin bu bot ile bir konuşma başlatmış olması gerekmektedir. Aksi takdirde mesaj gönderilemez.

Botunuzun durumu ile ilgili bilgileri, başlatılmış olan konuşmaları görebilem için, aşağıdaki linkten <HTTP_API_TOKEN> yazan yere kendi token bilginizi yazarak herhangi bir tarayıcı yardımıyla erişebilirsiniz.

https://api.telegram.org/bot<HTTP_API_TOKEN>/getUpdates

Yeni oluşturulmuş bir bot için bu sayfa aşağıdaki gibi görünecektir.

Şekil 5

Botunuz ile mesajlaşma sayfasını açtın, bunun için botunuzun kimlik adını arama çubuğuna yazabilirsiniz. Daha sonra /start komutu ile konuşmayı başlatın.

Şekil 6

Bu işlemin ardından tekrar aynı sayfayı ziyaret ettiğinizde başlatılan konuşma ile ilgili bilgileri de göreceksiniz. Burada bizim için önemli olan diğer bir bilgiyi bulabilirsiniz. Bu da Chat ID bilgisidir. Bu chat idyi kullanarak ilgili kişiye mesaj göndermeyi deneyeceğiz.

Şekil 7

Aşağıda yer alan Powershell komutlarını kullanarak "Merhaba Dünya" mesajı göndermeyi deneyelim. <HTTP_API_TOKEN> yazan alana BotFather'ın yeni bot oluşturduktan sonra size verdiği token değerini yazmanız ve <CHAT_ID> yazan alana da bot ile başlatmış olduğunuz konuşmanın chatId değerini yazmanız gerekmektedir.

$BotToken = "<HTTP_API_TOKEN>"
$chatID = <CHAT_ID>
$Message = "Merhaba Dünya"
Invoke-RestMethod -Uri "https://api.telegram.org/bot$($BotToken)/sendMessage?chat_id=$($chatID)&text=$($Message)" 

Komutlarımızı çalıştırdığımızda aşağıdaki gibi bir çıktı almayı bekliyoruz.

Şekil 8

Telegram hesabınızda da Botunuzdan gelen şu şekilde bir mesaj görmelisiniz.

Şekil 9

Event Logları Telegrama Göndermek

Botumuzu oluşturup, başarılı bir şekilde çalıştığını test ettikten sonra örnek powershell scriptimizi çalıştırabiliriz.

Bu script ile Telegram, sistem loglarında son 1 saat içinde oluşmuş hata mesajlarını bize iletecektir.

$BotToken = "<HTTP_API_TOKEN>"
$chatID = <CHAT_ID>
$EventLogs = Get-EventLog -List
foreach ($Eventlog in $EventLogs) {
    $Errors = Get-EventLog -LogName $Eventlog.log -EntryType Error -After (Get-Date).AddHours(-1) 
    foreach ($ErrorMsg in $Errors) {
        $Message = $ErrorMsg | Format-List * | Out-String
        $Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($MyToken)/sendMessage?chat_id=$($chatID)&text=$($Message)"    
    }
} 

Powershell scriptini çalıştırdıktan sonra aşağıdaki gibi hata mesajları mesaj olarak gelmeye başlayacaktır. Bu scripti görev zamanlayıcı ile otomatikleştirebilir, kritik durumlardan anında haberdar olabilirsiniz.Makalemin başında da belirttiğim gibi bunu bir makale dizisi şeklinde devam ettirmeyi planlıyorum. Bir sonraki makalemde Chat Id değerini otomatik olarak alma üzerinde durmaya çalışacağım. Basit bir tablo oluşturarak farklı Telegram kullanıcılarına farklı mesajlar göndermeyi deneyeceğim.

Last updated