Sunucularınızdan Gerekli Bilgileri Mail Yoluyla Alın!

Sisteminizi herhangi bir yazılım kullanmadan scriptler yazarak proaktif çözümler üretebilmemiz mümkündür.Bunun için birçok yazılım bulabilirsiniz fakat bunu masrafsız ve lisanssız nasıl yapabiliriz? Sistemlerin service pack seviyelerini almak,disklerin boş alan durumlarını incelemek ve bazı servislerin durumlarını mail olarak almak yararlı olabilir.
Bu script için CDO (Collaboration Data Object) özelliğini kullanacağız ve mailimizin gitmesi için bir smtp server’a ihtiyacımız olacak.Bu sisteminizde kullandığınız Exchange Server,Kerio Mail server gibi bir mail sunucu olabilir.Benim tavsiyem Çok fazla sunucudan bilgi almak için bir smtp kullanacaksanız bunun ayrı bir smtp olmasıdır.Çünkü sizin scriptlerinizin ya da uygulamaların attığı maillerde herhangi bir sıkıntı olduğunda (yazılımcıların mail atarken kullandıkları kodda döngü problemleri gibi.) smtp kuyruğunda binlerce mail görebilirsiniz.Bu yüzden varolan mail sisteminizi işe karıştırmaz ve problemlerinizi izole etmiş olursunuz.
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Raporlar"
objMessage.From = " notifications@mshowto.orgBu e-Posta adresi istek dışı postalardan korunmaktadır, görüntülüyebilmek için JavaScript etkinleştirilmelidir "
objMessage.To = " erkan.sezgin@mshowto.orgBu e-Posta adresi istek dışı postalardan korunmaktadır, görüntülüyebilmek için JavaScript etkinleştirilmelidir "
objMessage.TextBody = "Örnek mesaj"
‘’’’’ üstte yer alan kısımda cdo objesini yarattık ve bu mesajın konu,kimden,kime ve içeriğini hazırladık.
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
‘’’’’ bu mesajın smtp yoluyla gideceğini gösteriyor.
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mshowto.org"
‘’’’’mesajı göndermek üzere kullanacağınız smtp sunucunun adını yada IP sini yazıyoruz.
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
‘’’’’Smtp sunucunun hangi portunu kullanacağımızı belirtiyoruz.Smtp servisleri varsayılan olarak 25 ‘’’’’nolu portu kullanırlar.Exchange Server kullanıyorsanız default smtp virtual server yerine başka portu ‘’’’’kullanan ikinci bir smtp virtual server yaratarak bunu kullanmanızı tavsiye ediyorum.
objMessage.Configuration.Fields.Update
objMessage.Send
mesaj gönderme scripti ni test maksatlı .vbs olarak kaydettiğinizde kullanabilirsiniz.Ama bizim asıl yapmak istediğimiz mail göndermek değil ,bunun öncesinde başka bir scripte bağlamak.Bu scriptin ne olduğunu siz seçebilirsiniz.Örnek olarak disklerimizde ne kadar boş alan olduğuna dair bilgi veren bir scripti birleştireceğiz.
=======================================================
Set fso=CreateObject(“Scripting.FileSystemObject”)
‘Dosya objesi açıyoruz.
Set objInputFile=fso.OpenTextFile(“c:\Sunucular.txt”,1),True)
‘C:\Sunucular.txt dosyasında bulunan host isimlerini script okuma (1) modunda açıyoruz.
Set objOutputFile=fso.OpenTextFile(“SunucuDiskDurumu.txt”,2,True)
‘c:\sunucuDiskDurumu dosyasını alacağımız bilgileri yazmak için yazma(2) modunda açıyoruz.
Const HARD_DISK = 3
‘Sürücü tipini belirtiyoruz.
Do While objInputFile.AtEndOfLine <> True
strComputer=objInputFile.ReadLine
‘Do While döngüsüyle InputFile içerisindeki host isimlerini okunacak ve strComputer değişkenine ‘atanacak.
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")
‘WMI sorgularıyla istediğimiz verileri sorgulayacağız.
For Each objDisk in colDisks
objOutputFile.WriteLine(strComputer)
objOutputFile.WriteLine ( "DeviceID: "& vbTab & objDisk.DeviceID)
objOutputFile.WriteLine ("Free Disk Space: "& vbTab & objDisk.FreeSpace/1024)
Next
‘Her disk için host ismi,DeviceID ve disk üzerindeki boş alan bilgisi SunucuDiskDurumu.txt ‘dosyasına yazılacakFreeDiskSpace satırında değeri KB olarak görmek için 1024 e bölüyoruz ‘dilerseniz MB ve GB için farklı bölen kullanabilirsiniz.
Loop
objOutputFile.Close
‘Disk bilgilerini yazdığınız dosyayı kapatmak zorundayız ve okuma (1) modunda tekrar açmalıyız.
Set objOutputFile=fso.OpenTextFile(“SunucuDurumu.txt”,1,True)
Yukarıda bahsettiğimiz email scriptini bu kodlarımızın devamına ekleyebiliriz.Mail içerisinde disk durumuna ilişkin bilgilerin gitmesi için objMessage.TextBody = objOutputFile.ReadAll satırını değiştiriyoruz. Bu bilgileri mesajın içinde değil ek olarak görmek isterseniz objMessage.TextBody = satırının altına objMessage.AddAttachment "c:\SunucuDiskDurumu.txt" olarak yeni bir satır ekleyebilirsiniz.
Bu oluşturduğumuz .vbs dosyasının belirlediğimiz zamanlarda çalışması için Görev zamanlayıcı (Task Scheduler) yı kullanarak C:\Windows\System32\cscript.exe c:\diskmail.vbs programını çalıştırması için ayarlayabiliriz..vbs dosyanızın yoluna dikkat ediniz eğer boşluk varsa başta ve sonda “ kullanmak gerekecektir.

Yorumlar

Bu blogdaki popüler yayınlar

Uzak Masaüstü Bağlantı Geçmişini Silmek

TERMINAL SERVICES UNLIMITED

Gpupdate Komutu