Opmanager Script Monitoring
Komut dosyaları sistem yöneticilerine büyük esneklik sağlar ve bu nedenle oldukça popülerdir. OpManager'ın betik izlemesi, kendi geliştirdiğiniz betikleri yürütmenize yardımcı olur ve betik çıktısıyla sizi uyarır. PowerShell, Linux kabuk betiği, VBScript, Perl ve Python betiklerini kutudan çıktığı haliyle destekler. Bu sayfada, en sık kullanılan betik şablonları derlenmiştir; bu şablonlar ağ izlemenizi kolaylaştırmak için OpManager'a aktarılabilir. Betik çıktılarını almak için bu şablonu bir cihaza atayabilirsiniz. Oluşturduğunuz özel bir şablonu toplulukla paylaşmak veya topluluktan bir şablon içe aktarmak istediğinizde, şablonu içe/dışa aktarma seçeneği kullanışlı hale gelmektedir.
Daha fazla bilgi için bakınız:
- https://www.manageengine.com/network-monitoring/script-monitoring.html
- https://www.manageengine.com/network-monitoring/script-monitoring-templates.html
SSL Monitoring
Biz bu kısımda VBScript kullanarak SSL sertifika süresi bittiği zaman uyarı alma işlemlerini uygulayacağız. İşlemlere başlamadan önce öngereksinimlerin tamamlanması gerekmektedir.
- OpenSSL, OpManager sunucusuna kurulmalıdır. https://slproweb.com/products/Win32OpenSSL.html linkini kullanarak yükleyebilirsiniz.
- Opmanager sunucusunda C bölümüne TEMP adında bir klasör oluşturun.
- Aşağıdaki script içeriğinde google.com yazan kısmı takip edeceğiniz SSL yüklü olduğu siteyi yazın ve MonitorName kısmındaki Google yazan kısmı SSL takip edeceğiniz siteye uygun bir isim vererek ssl.xml olarak kayıt ediniz.
<?xml version="1.0" encoding="UTF-8"?><properties>
<entry key="executeFrom">0</entry>
<entry key="version">2</entry>
<entry key="scriptBody">Option Explicit
Dim oShell, ArgObj, Fh, FSO, Line, ExpiryLine, DaysLeft, ExpDate, oExec, cert
Dim tstream, i, str, PluginPath, CertFilePath, char, XString
Const ForReading = 1
' Argümanlar:
' 0: host:port (örnek: example.com:443)
' 1: dosya adı (örnek: cert.txt)
CertFilePath = "C:\TEMP\" & wscript.Arguments(1)
PluginPath = "C:\Program Files\OpenSSL-Win64\bin\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set tstream = FSO.CreateTextFile(CertFilePath, True)
ArgObj = wscript.Arguments(0)
Set oShell = wscript.CreateObject("WScript.Shell")
' Sertifikayı openssl ile al
Set oExec = oShell.Exec(PluginPath & "openssl.exe s_client -connect " & ArgObj)
' Sertifikayı dosyaya yaz (END CERTIFICATE satırına kadar)
Do Until oExec.StdOut.AtEndOfStream
char = oExec.StdOut.Read(1)
tstream.Write (char)
If Len(XString) < 20 Then
XString = XString & char
ElseIf XString = "END CERTIFICATE-----" Then
Exit Do
Else
XString = Mid(XString, 2, 19) & char
End If
Loop
tstream.Close
oExec.Terminate
' Sertifika tarih bilgilerini al
Set oExec = oShell.Exec(PluginPath & "openssl.exe x509 -noout -in """ & CertFilePath & """ -dates")
Line = oExec.StdOut.ReadAll
wscript.echo Line
' notAfter satırını bul ve tarihi al
Dim LinesArray
LinesArray = Split(Line, vbNewLine)
For Each Line In LinesArray
If InStr(Line, "notAfter=") > 0 Then
ExpiryLine = Trim(Mid(Line, InStr(Line, "notAfter=") + 9))
Exit For
End If
Next
If ExpiryLine = "" Then
wscript.echo "Hata: Sertifika bitiş tarihi alınamadı."
WScript.Quit(1)
End If
' Tarihi uygun formata çevir
ExpDate = ConvertDate(ExpiryLine)
' Gün sayısını hesapla
DaysLeft = DateDiff("d", Now(), ExpDate)
' Çıktı ver
wscript.echo "Message: Time remaining for SSL certificate expiration: " & DaysLeft & " day(s)"
wscript.echo "Data:"
wscript.echo "DaysToExpire: " & DaysLeft
' Nesneleri temizle
oExec.Terminate
Set oShell = Nothing
Set oExec = Nothing
' Geçici dosyayı sil
Dim filedel
Set filedel = CreateObject("Scripting.FileSystemObject")
If filedel.FileExists(CertFilePath) Then
filedel.DeleteFile(CertFilePath)
End If
WScript.Quit
' Tarih dönüştürme fonksiyonu
Function ConvertDate(DateStr)
Dim Components, Month, Day, Year
Components = Split(DateStr)
Select Case Components(0)
Case "Jan", "January": Month = 1
Case "Feb", "February": Month = 2
Case "Mar", "March": Month = 3
Case "Apr", "April": Month = 4
Case "May": Month = 5
Case "Jun", "June": Month = 6
Case "Jul", "July": Month = 7
Case "Aug", "August": Month = 8
Case "Sep", "Sept", "September": Month = 9
Case "Oct", "October": Month = 10
Case "Nov", "November": Month = 11
Case "Dec", "December": Month = 12
Case Else: Month = 1
End Select
' Genelde: Jul 29 12:00:00 2025 GMT
If UBound(Components) = 5 Then
Day = Components(1)
Year = Components(3)
Else
Day = Components(1)
Year = Components(3)
End If
ConvertDate = CDate(Day & "/" & Month & "/" & Year)
End Function</entry>
<entry key="timeout">10</entry>
<entry key="clrMessage">$MONITOR is now back to normal, current value is $CURRENTVALUE%</entry>
<entry key="yaxisText">units</entry>
<entry key="commandLine">cscript ${FileName}.vbs google.com:443 ${FileName}.txt</entry>
<entry key="criticalThresholdValue">30</entry>
<entry key="monitorDescription">VBSCript to get the number of remaining days of a website SSL certificate to expire</entry>
<entry key="rearmValue">30</entry>
<entry key="workingDir">${TempDir}</entry>
<entry key="dataType">1</entry>
<entry key="failureThreshold">1</entry>
<entry key="thresholdEnabled">true</entry>
<entry key="criticalThresholdType">min</entry>
<entry key="criticalMessage">$MONITOR is $CURRENTVALUE, threshold value for this monitor is $THRESHOLDVALUE</entry>
<entry key="interval">30</entry>
<entry key="monitorName">Google SSL Certificate Expiry</entry>
</properties>
Opmanager üzerinde oturum açtıktan sonra, Settings → Monitoring → Script Templates → More Actions → Import Template bağlantısına tıklayın. Açılan pencerede kayıt ettiniz ssl.xml dosyasını yükleyin. Yüklenen betiğe tıkladıktan sonra, Test Script kısmından herhangi bir kaynağı seçerek test edin.

Value kısmında kalan sertifika süresini görebilirsiniz.

Artık tek yapmanız gereken Associate butonuna basarak bu betiği opmanager sunucusuna atamak.

Kısa bir süre sonra betiğin çalıştığını görebilirsiniz.

Threshold değerini Script Templates kısmından değiştirdiğiniz zaman işlem geçerli olmayacaktır. Bu yüzden Opmanager cihazına gidip Script Monitors kısmından güncellemeniz gerekmektedir.
