Powershell ile Snmp Protokolü Kullanımı

Eyl 07, 2013
Powershell

Powershell, Windows işletim sistemlerinde, sistem yönetimini komut satırı üzerinden yapabilmeyi sağlayan bir araçtır. Nesne tabanlı çalışma mantığı ve .NET kütüphanesini kullanabilmesi açısından betik (script) yazabilme imkanı sağlar ve birçok alanda yönetimi kolaylaştırır.

Cmdlets

Powershell arayüzü üzerinde kullanılan mevcut tüm komutlara “cmdlets” denir. En temel komutlar “Get” ve “Set” komutlarıdır.  “Get” komutuna çeşitli parametreler eklenerek, istenilen bilgiler çekilebilir,  “Set” komutlarına parametreler ekleyerek de yapılması istenen görevler gerekli yerlerde yapılandırılabilir.  Temel olarak birkaç komut örneği aşağıdaki gibidir:
  • “Get-Command –commandType cmdlet” komutu ile mevcut tüm komutlar listelenir.
  • “Get-Command –verb get” komutu ile de, “get” ile başlayan tüm komutlar listelenebilir.
  • “Get-Help Get-Command -detailed” komutu ile “get” komutu kullanımı ile ilgili ayrıntılı bilgi alınabilir.
  • “Get-Help Get-Command -full” komutu ile de “get” komutu kullanımı ve parametre tipleri ile ilgili bilgi alınabilir.

NetCmdlets

NetCmdlets, NSOFTWARE firması tarafından geliştirilen bir araçtır ve SNMP (Simple Network Management Protokol-Basit Ağ Yönetim Protokolü), LDAP (Lightweight Directory Access Protocol-Hafif Dizin Erişim Protokolü), DNS(Domain Name System-Etki Alanı Ad Sistemi), "Syslog", HTTP (Hypertext Transfer Protocol-Hipermetin İletim Protokolü), WebDav (Web based Distributed Authoring and Versioning), FTP (File Transfer Protocol-Dosya İletim Protokolü), SMTP (Simple Mail Transfer Protocol-Basit Posta İletim Protokolü), POP (Post Office Protocol-Posta İletişim Protokolü), IMAP (Internet Message Access Protocol-İnternet Mesaj Erişim Protokolü), Rexec/RShell (Remote Execution/Remote Shell-Uzak Uygulama/Uzak Kabuk), Telnet, SSH (Secure Shell-Güvenli Kabuk), Remoting (Uzak Bağlantı) gibi  servisleri kullanan  bir ağ (network) üzerinde de Powershell ile yönetim imkanı sağlar.

Netcmdlets ile istenirse, SNMP (Simple Network Management Protokol-Basit Ağ Yönetim Protokolü) sunucusunun yönetimi, tanımlanan OID (Object Identifier-Nesne Tanımlayıcısı)'ler sayesinde, powershell üzerinde otomatik hale getirilebilir.

Kısaca SNMP

SNMP, TCP/IP ile yapılandırılmış ağlar üzerindeki cihazları görüntülemek ya da yönetmek için kullanılan bir protokoldür. Bir ağ üzerinde yönetimin sağlanabilmesi için, yönetim konsolu (management console)  denilen; ağ protokolü ve ağa bağlı olan cihazların tanımlandığı, kullanım ve performans istatistikleri ile olay/hata mesajlarının tutulduğu bir bilgisayarın olması gereklidir. SNMP yönetim yazılımı (SNMP management software) programının çalıştırıldığı her sunucu bu gereklilikleri sağlar ve ağ üzerinde yönetim konsolu olarak görev alabilir.

Yönetim Bilgi Birimi (Management Information Base-MIB)

MIB, yönetilebilir nesnelerin tanımını ve değerini içerisinde  bulunduran, ağaç yapısına sahip bir veri dosyasıdır ve SNMP ile yönetilebilen her makinanın o makina üzerinde tanımlı yönetilebilir nesnelerinin tutulduğu bir MIB dosyasının olması zorunludur. Bir MIB içerisinde temel olarak; nesne, nesne adı ve OID arasındaki ilişki, nesne tanımı, yapı içerisindeki sıralama şekli ve nesne üzerinde tanımlı izin bilgileri bulunur.

Object Identifier - OID

MIB içerisinde tanımlı, erişilebilir nesnelerin değerini tutan,rakamlardan oluşan evrensel bir değişkendir. MIB yapısındaki sıralamaya göre değer alır. Her kuruluşun, "Internet Engineering Task Force (IETF)" tarafından atanan bir değeri vardır, yani belirli bir yere kadar ağaç yapısı evrenseldir ancak kurumların kendi kullanacakları yönetim nesneleri için bu kodu her kurum kendi tanımlar.

Aracılar (Agents)

MIB’den yönetilebilir nesnelerle ilgili bilgi alabilmek için çalışan bir SNMP programıdır.
Powershell üzerinde Netcmdlets ile veri çekme ya da işleme amaçlı  yürütülebilecek snmp komutları “get-snmp” ya da “set-snmp” ile başlar ve “-agent” , “-oid” parametreleri ve istenilen görev bilgisi de komuta eklenerek komut çalıştırılabilir ve yönetim sağlanabilir.

Örneğin, "1.3.6.1.2.1.1" evrensel olarak tanımlanmış bir oid'dir ve sistem nesneleri ile ilgili bilgilere ulaşmayı sağlar. Bu hiyerarşik yapıda, sistem kökünün altında sysDescr(1), sysObjectID(2), sysUpTime (3), sysContact (4), sysName (5), sysLocation (6), sysServices (7), sysORLastChange (8), sysORTable (9) değerleri bulunur. 1.3.6.1.2.1.1'in sonuna yanlarındaki rakamlardan herhangi biri eklendiğinde o nesnenin o değeriyle ilgili bilgilerini geri döndürür.

"1.3.6.1.2.1.1" ile ilgili örnek bazı komutlar aşağıdaki gibidir:

  • Aşağıdaki komutta da "sysName.0" değeri "1.3.6.1.2.1.1.1" ile aynı anlamdadır.

    Get-SNMP -agent 255.255.255.255 -oid sysName.0




  • "-oid" değerinin arkasına eklenen "-walk" parametresi ile de, sistem nesnelerinin altındaki varolan tüm bilgilere sırasıyla ulaşılabilir. Yani "1.3.6.1.2.1.1" değerinin sonuna sırasıyla rakamları eklenir ve gelen bilgiler geri döndürülür.

    Get-SNMP -agent 160.75.5.142 -oid 1.3.6.1.2.1.1 -walk




  • "-walk" parametresinin arkasına eklenen "-translate" parametresi ile de, oid'nin rakamsal olarak gösterilen değerlerinin isim karşılıkları açıklanarak yazdırılabilir.

    Get-SNMP -agent 160.75.5.142 -oid 1.3.6.1.2.1.1 -walk -translate