La classe NsServerAlert représente une condition critique surveillée par le serveur de sauvegarde. Lorsqu'une alerte est déclenchée, cela signifie que la condition a éé rencontrée. Toute alerte déclenchée doit être réinitialisée manuellement afin que la surveillance de la condition soit relancée. La réinitialisation des alertes peut se faire depuis la console d'administration ou par code.
Les alertes serveur permettent de prévenir d'une défaillance ou d'une situation inhabituelle. Elles peuvent être appliquées à de nombreux objets du serveur de sauvegarde : utilisateurs, groupes, sauvegardes, etc. Le déclenchement d'une alerte engendre une notification dans la console d'administration du logiciel et suivant les paramètres de reporting choisis, un e-mail peut etre envoyé à l'administrateur du serveur de de sauvegarde.
Un système d'héritage permet de définir au niveau du groupe d'utilisateurs (NsUserGroup) les alertes qui devront être automatiquement injectées par le serveur lors de la création de nouvelles sauvegardes et de nouveaux groupes. Un utilisateur connecté avec des droits administrateur peut également créer, modifier et réinitialiser des alertes.
L'identificateur numérique de l'alerte. Les constantes suivantes peuvent-être utilisées :
La date de création de l'alerte, au format UTC.
La classe de l'alerte.
La sous-classe de l'alerte.
Le type de l'objet sur lequel porte l'alerte.
L'identificateur unique de l'objet sur lequel porte l'alerte.
Une valeur booléenne indiquant si l'alerte est déclenchée ou non.
Le mode de notification à utiliser lorsque l'alerte est déclenchée.
La date de déclenchement de l'alerte au format UTC, le cas échéant.
Charge en mémoire l'alerte d'identificateur AlertID.
Créée ou met à jour l'alerte décrite par l'objet.
Supprime l'alerte représentée par l'objet.
Réinitialise l'alerte, si elle est déclenchée.
Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")
const nsAlertClassCheckMaxAuthAttempts = 11
const aotUser = 2
const nsAlertNotifyServerAdmin = 1
if connection.ConnectToLocalServer then
set server = CreateObject("NsAPI.NsServer")
usersCount = 0 ' Compte les utilisateurs du serveur
existingAlertsCount = 0 ' Compte le nombre d'alertes nsAlertClassCheckMaxAuthAttempts déjà créées
createdAlertsCount = 0 ' Compte le nombre d'alertes nsAlertClassCheckMaxAuthAttempts créées par ce script
if server.Load(connection) then ' Charger les informations serveur
set groups = server.UserGroups(connection) ' Récupérer les groupes paramétrés
for each group in groups ' Pour chaque groupe
set users = group.Users(connection) ' Récupérer les utilisateurs du groupe
for each user in users ' Pour chaque utilisateur
set alerts = user.alerts(connection, false) ' Récupérer toutes les alertes qui lui sont associées
usersCount = usersCount + 1
index = alerts.FindByClass(nsAlertClassCheckMaxAuthAttempts) ' Chercher la position dans la liste de l'alerte nsAlertClassCheckMaxAuthAttempts
if index = -1 then ' L'alerte n'exite pas !
set newAlert = CreateObject("NsAPI.NsServerAlert")
newAlert.ID = -1 ' Constante nécessaire pour créer l'alerte
newAlert.AlertClass = nsAlertClassCheckMaxAuthAttempts
newAlert.AlertSubclass = 0
newAlert.ObjectType = aotUser ' Associer à un objet Utilisateur
newAlert.ObjectID = user.ID ' L'ID de l'utilisateur
newAlert.NotifyMode = nsAlertNotifyServerAdmin ' Envoyer un mail à l'admin serveur
if newAlert.update(connection) then ' Créer l'alerte
createdAlertsCount = createdAlertsCount + 1 ' Incrémenter le nombre d'alertes créées
else
MsgBox "Impossible de créer une alerte. Consultez les journaux serveur pour en savoir plus." ' Erreur
end if
else
' L'alerte existe déjà. On ne fait rien, à part incrémenter le nombre d'alertes existantes.
existingAlertsCount = existingAlertsCount + 1
end if
next
next
' Afficher un joli résumé
MsgBox usersCount & " utilisateurs ont été analysés." & vbCrLf & existingAlertsCount & " alertes existaient déjà." & vbCrLf & createdAlertsCount & " alertes ont été crées."
else
MsgBox "Impossible de charger les informations serveur."
end if
connection.Disconnect
else
MsgBox "Connexion au serveur local impossible."
end if
Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")
if connection.ConnectToLocalServer then
set server = CreateObject("NsAPI.NsServer")
raisedAlertsCount = 0
if server.Load(connection) then ' Charger les informations serveur
set alerts = server.Alerts(connection, true) ' Obtenir la liste des alertes déclenchées
for each alert in alerts ' Pour chaque alerte
if alert.Reset(connection) then ' Réinitialisation de l'alerte...
raisedAlertsCount = raisedAlertsCount + 1 ' Succès : on incrémente le compteur
else
MsgBox "Impossible de réinitialiser l'alerte #" & alert.ID ' Echec : on notifie l'erreur
end if
next
else
MsgBox "Impossible de charger les informations serveur."
end if
if raisedAlertsCount = 0 then
MsgBox "Aucune alerte n'a été réinitialisée."
else
MsgBox raisedAlertsCount & " alertes ont été réinitialisées."
end if
connection.Disconnect
else
MsgBox "Connexion au serveur local impossible."
end if