La notification SMS sans passerelle SMS, c'est possible.

Le jeu d'outils du moteur de notifications d'Operations Manager offre des options de notification (appelées canaux de notification ou fournisseurs) telles que la messagerie instantanée et le SMS (qui requiert un fournisseur SMS tiers installé sur le serveur d'administration).

Les abonnements aux notifications incluent une option de définition de la portée pour que les administrateurs puissent limiter la visibilité des types et groupes d'objets disponibles aux rôles d'opérateurs et cibler plus précisément les abonnements aux notifications.

Le vieillissement des alertes (escalade) permet d'envoyer une notification lorsqu'une alerte qui satisfait les critères définis dans l'abonnement reste dans un état de résolution donné pendant une période définie par l'utilisateur.

Les fournisseurs de  notifications sont donc au nombre de 4 :

1.     Email

2.     IM

3.     SMS

4.     Ligne de commande, scripts, programmes tiers

 

Pour envoyer un SMS il faut une passerelle SMS , c'est a dire soit une passerelle de service soit un GSM connecté au serveur. La mise en place est couteuse pour la première solution, la qualité de service est aléatoire pour la deuxième.

Alors comment faire à moindre frais ?

Le principe est simple envoyer un message a un service Mail2SMS pour ensuite recevoir le message sur son mobile. il existe de nombreux fournisseurs de passerelle Mail2SMS. Ensuite il faudra utiliser un script pour envoyer le mail de façon a avoir une plus grande souplesse dans le formatage du mail.

Exemple de configuration

Full path to file :  C:\Windows\System32\cmd.exe

Ligne de commande :

/c C:\....\Scripts\Email2SMSAlert.vbs //B //H:CScript //Nologo //T:20 "$Data/Context/DataItem/AlertName$" "$Data/Context/DataItem/ManagedEntityDisplayName$" "$Data[Default='No Description']/Context/DataItem/AlertDescription$" "$Data/Context/DataItem/Severity$" "$Data/Context/DataItem/ResolutionState$" "$Data/Context/DataItem/Priority$"



Repertoire de travail : C:\....\Scripts



Le script suivant Email2SMSAlert.vbs est bien su situé dans C:\....\Scripts




' ---------------------------------------------------------------------------------' 

' ENVOI MAIL2SMS 2009

' ---------------------------------------------------------------------------------

' ************************************************************

' GET PARAMETERS INTO SCRIPT ( notification command channel)

' ************************************************************


Option Explicit

Dim colNamedArguments

Dim AlertDescription

Dim AlertSource

Dim AlertName

Dim AlertSev

Dim AlertPrio

Dim AlertState

Dim objEmail

Dim objShell

Dim strContents

Dim strEventCreate

Dim strEventDescription

Dim strFrom

Dim strSub

Dim strBody

Dim strSMTP

Dim strTo

DIM TemplateFile

DIM fso

DIM fichierSMS

DIM oAPI





'Declaration des constantes events type pour le debug

Const EVENT_TYPE_ERROR = 1

Const EVENT_TYPE_WARNING = 2

Const EVENT_TYPE_SUCCESS = 4



'Declaration des constantes lecture fichier source des contacts SMS

Const ForReading = 1



'Emplacement du fichier des correspondant SMS-----------------



TemplateFile = "D:\......\Scripts\EmailAlert_sms.txt"



Set oAPI = CreateObject("MOM.ScriptAPI")

Set colNamedArguments = Wscript.Arguments.Named

Set objShell = CreateObject("Wscript.Shell")



' c:\windows\system32\cmd.exe

' Exemple de la ligne de commande :

' /c D:\....\Scripts\EmailAlert.vbs "$Data/Context/DataItem/AlertName$" "$Data/Context/DataItem/ManagedEntityDisplayName$" "$Data[Default='No Description']/Context/DataItem/AlertDescription$" "$Data/Context/DataItem/Severity$" "$Data/Context/DataItem/ResolutionState$" "$Data/Context/DataItem/Priority$"

' c:\windows\system32\cmd.exe /c



AlertName = Wscript.Arguments.Item(0)

AlertSource = Wscript.Arguments.Item(1)

AlertDescription = Wscript.Arguments.Item(2)

AlertSev = Wscript.Arguments.Item(3)

AlertState = Wscript.Arguments.Item(4)

AlertPrio = Wscript.Arguments.Item(5)

'strResolutionState = Wscript.Arguments.Item(7)

'strAlertCategory = Wscript.Arguments.Item(8)

'StrDateCreation = Wscript.Arguments.Item(9)

'StrAlertOWner = Wscript.Arguments.Item(10)

'StrRepeatCount = Wscript.Arguments.Item(11)

'StrResolvedBy = Wscript.Arguments.Item(12)



' ******************************************

' TRANSLATE SEVERITY AND PRIORITY

' ******************************************



if AlertSev = "1" Then

AlertSev = "Critique"

elseif AlertSev = "2" then

AlertSev = "Warning"

elseif AlertSev = "3" then

AlertSev = "Information"

End If



if AlertPrio = "1" Then

AlertPrio = "Haute"

elseif AlertPrio = "2" then

AlertPrio = "Moyenne"

elseif AlertPrio = "3" then

AlertPrio = "Basse"

End If



' ******************************************

' LISTE des paramétres possibles

' ******************************************



'$Data/Context/DataItem/AlertId$ The AlertID GUID **

'$Data/Context/DataItem/AlertName$ The Alert Name **

'$Data/Context/DataItem/Category$ The Alert category

'$Data/Context/DataItem/CreatedByMonitor$ True/False

'$Data/Context/DataItem/DataItemCreateTime$ UTC Date/Time of Dataitem created

'$Data/Context/DataItem/DataItemCreateTimeLocal$ LocalTime Date/Time of Dataitem created

'$Data/Context/DataItem/LastModified$ UTC Date/Time DataItem was modified

'$Data/Context/DataItem/LastModifiedLocal$ Local Date/Time DataItem was modified

'$Data/Context/DataItem/ManagedEntity$ ManagedEntity GUID **

'$Data/Context/DataItem/ManagedEntityDisplayName$ ManagedEntity Display name **

'$Data/Context/DataItem/ManagedEntityFullName$ ManagedEntity Full name

'$Data/Context/DataItem/ManagedEntityPath$ Managed Entity Path

'$Data/Context/DataItem/Priority$ The Alert Priority Number (High=1,Medium=2,Low=3)

'$Data/Context/DataItem/Owner$ The Alert Owner

'$Data/Context/DataItem/RepeatCount$ The Alert Repeat Count

'$Data/Context/DataItem/ResolutionState$ Resolution state ID (0=New, 255= Closed)

'$Data/Context/DataItem/ResolutionStateLastModified$ UTC Date/Time ResolutionState was last modified

'$Data/Context/DataItem/ResolutionStateLastModifiedLocal$ Local Date/Time ResolutionState was last modified

'$Data/Context/DataItem/ResolutionStateName$ The Resolution State Name (New, Closed)

'$Data/Context/DataItem/ResolvedBy$ Person resolving the alert

'$Data/Context/DataItem/Severity$ The Alert Severity ID

'$Data/Context/DataItem/TicketId$ The TicketID

'$Data/Context/DataItem/TimeAdded$ UTC Time Added

'$Data/Context/DataItem/TimeAddedLocal$ Local Time Added

'$Data/Context/DataItem/TimeRaised$ UTC Time Raised

'$Data/Context/DataItem/TimeRaisedLocal$ Local Time Raised

'$Data/Context/DataItem/TimeResolved$ UTC Date/Time the Alert was resolved





'Alert Description from OpsMgr Alert

strContents = AlertDescription



' ******************************************

' MAIL CONFIGURATION

' ******************************************



strFrom = "_svc_mail_scom_sdr@anpe.fr"

strSub = "cduflos:Anpe@2008"

'"SCRIPT - SDR. Severity: " & AlertSev & ". Priority: " & AlertPrio & ". State: " & AlertState

strBody = "ALERTE SDR" & VBCRLF & "Nom de l'alerte: " & AlertName & VBCRLF & "Source de l'alerte: " & AlertSource & VBCRLF & "Statut: " & AlertState & VBCRLF & "Description: " & AlertDescription & VBCRLF & "Severité: " & AlertSev & VBCRLF & "Priorité: " & AlertPrio

strSMTP = "Smtp.anpe.fr"











'--------------------------------------------------------

' Lecture des adresses mailsms destination

'--------------------------------------------------------



Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists(TemplateFile) Then

Set fichierSMS = fso.OpenTextFile(TemplateFile, ForReading)

Do while fichierSMS.AtEndOfStream <> True

strTo=fichierSMS.Readline

WScript.Echo strTo

'Appel de la fonction

Call SendEMail(strTo)



Loop

fichierSMS.close

Else

WScript.Echo "le fichier modele des emails, " &_

Chr(34) & TemplateFile & Chr(34) & ", est inexistant!"

WScript.Quit

End If

'end main script







' ******************************************

' SEND MESSAGE et LOG

' ******************************************

Public Function SendEmail(strTo)

if strTo="" Then

Call oAPI.LogScriptEvent("MAIL2SMS ",10077, EVENT_TYPE_SUCCESS ,"Fin d'envoi des mails vers" & strSMTP & VBCRLF & strBody)

Exit Function

end If

set objEmail = CreateObject("CDO.Message")

objEmail.From = strFrom

objEmail.To = strTo

objEmail.Subject = strSub

objEmail.Textbody = strBody

objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP

objEmail.Configuration.Fields.Update

objEmail.Send

Call oAPI.LogScriptEvent("MAIL2SMS ",10077, EVENT_TYPE_SUCCESS ,"Le mail a destination de " & strTo & " a été transmis au serveur" & strSMTP)



' ******************************************

' LOG TO FILE (DATE,TIME,TO,ALERT NAME,STATE

' ******************************************



Dim ALogs, myFSO, WriteStuff, dateStamp

dim strdateStamp

dim strTimeStamp

strdateStamp = Date()

strTimeStamp = Time()



ALogs = strdateStamp & strTimeStamp & ": Le mail a destination de " & strTo & " a été transmis au serveur" & strSMTP

Set myFSO = CreateObject("Scripting.FileSystemObject")

Set WriteStuff = myFSO.OpenTextFile("SMS_Send.log", 8, True)

WriteStuff.WriteLine(ALogs)

WriteStuff.Close



End Function



Enfin la ligne de commande suivante permet de tester le script :




c:\windows\system32\cmd.exe /c D:\.....\Scripts\EmailAlertSMS.vbs  //H:CScript //Nologo //T:20 "Alerte de test" "TEST" "Cette alerte est une alerte de test Avanade" "0" "NEW" "0" 


Aucun commentaire:

Enregistrer un commentaire

Les commentaires sont soumis a modération