Bonjour,
Je me permet de vous proposer ce modeste script écris grâce à l'aide obtenus sur ce forum.
Contexte d'utilisation:
J'administre une trentaine de serveur(windows 2003) sur les réseau pédagogiques de collèges.
Ces serveur centralisent la console antivirus, qui va chercher les mises à jour sur internet et les distribue aux stations clientes.
Le problème: sur certains serveur, et de manière aléatoire cette tâche de mise à jour disparait.
J'ai mis en place une tâche planifiée qui appelle tous les midi le script survmajak.exe dont le code est ci dessous.
commande de la tâche planifiée:
c:\survmajak.exe /RNE:RNE établissement /ATAdress:mail_animateur_tice /RaipAdress:mail_assistance.
Les paramètres: RNE est l'identifiant du collège (me permettant de savoir de qui provient le mail
-ATAdress mail de la personne référente au sain de l'établissement.
-Raip Adress mail de l'assistance informatique.
Ces paramètres sont récupérés par le script.
► Afficher le texte
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.2.10.0
Author: Fred39
Script Function: Surveillance de la tâche globale de mise à jour AK
#ce ----------------------------------------------------------------------------
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=survmajak.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <INet.au3>
#Include <Date.au3>
;déclaration des variables
;------------------------------------------------------------------------------
Dim $Body[3]
$SmtpServer = "smtp.mondomaine.fr"
;récupération des paramètres d'appel du programme
$RNE = OptArgs($CmdLine, "RNE", "undef")
$ATAdress = OptArgs($CmdLine, "ATAdress", "undef")
$RaipAdress = OptArgs($CmdLine, "RaipAdress", "undef")
$FromName = "Adminkit " & $RNE
$FromAddress = "Adminkit" & $RNE & "@ac-academie.fr"
; Si on est le 1er, envoie d'un mail au raip validant le fonctionnement de la tâche de surveillance. l'assistance doit recevoir autant de mail que de serveur installés.
;------------------------------------------------------------------------------
If @MDAY = 1 Then
$Subject = "surveillance tâche de mise à jour AK"
$Body[0] = "Serveur pedago " & $RNE
$Body[1] = "La procédure de surveillance de la tâche de mise à jour AK fonctionne"
$Body[2] = " "
Envoi_mail($FromName, $FromAddress, $RaipAdress, $Subject, $Body)
EndIf
; calcul depuis combien de temps la machine est allumée
;------------------------------------------------------------------------------
$aTSB = DllCall ("kernel32.dll", "long", "GetTickCount")
$ticksSinceBoot = $aTSB[0]
dim $iHours, $iMins, $iSecs
_TicksToTime ( $ticksSinceBoot, $iHours, $iMins, $iSecs )
$iDays = int($iHours / 24)
; Si la station est allumée depuis moins de 1 jour, on quitte
IF $iDays < 1 Then
Exit
EndIf
;calcul de la date de derniere modif du fichier témoin de la mise à jour
$t= FileGetTime("c:\chemin_du_fichier_temoin", 0)
$dernieremodifdaily = $t[0] & "/" & $t[1] & "/" & $t[2]
$Aujourdhui = _NowCalcDate()
$agedaily = _DateDiff ('D', $dernieremodifdaily, $Aujourdhui )
;Si la derniere modif du fichier a plus de 3 jours, on envoie un mail.
If $agedaily >=3 Then
$ddmmyyyydernieremodifdaily = $t[2] & "/" & $t[1] & "/" & $t[0]; ici je remet la date au format ddmmyyyy pour la rendre lisible dans le mail
$Subject = "problème de mise à jour AK"
$Body[0] = "Le serveur pedagogique de l'établissement "& $RNE & " est allumé depuis plus d'un jour"
$Body[1] = "et la dernière mise à jour d'adminkit date du " & $ddmmyyyydernieremodifdaily
$Body[2] = "il doit y avoir un problème, contactez l'assistance académique https://assistance.academie.fr"
Envoi_mail($FromName, $FromAddress, $RaipAdress, $Subject, $Body); ici on envoie un mail à la personne ressource de l'établissement, puis à l'assistance académique.
Envoi_mail($FromName, $FromAddress, $ATAdress, $Subject, $Body)
EndIf
;Fonctions
;-----------------------------------------------------------------------------------
Func Envoi_mail($ParamFromName, $ParamFromAddress, $ParamToAddress, $ParamSubject, $ParamBody)
$Response = _INetSmtpMail($SmtpServer, $ParamFromName, $ParamFromAddress, $ParamToAddress, $ParamSubject, $ParamBody)
EndFunc ;==>Envoi_mail
Func OptArgs($args, $opt, $default)
$arraySize = UBound($args)
If $arraySize <= 0 Then
Return $default
EndIf
For $i = 0 To $arraySize - 1
If StringRegExp($args[$i], "^[-/]" & $opt & "$") Then
Return True
EndIf
If StringRegExp($args[$i], "^[-/]" & $opt & "[:=]") Then
Return StringRegExpReplace($args[$i], "^[-/]" & $opt & "[:=]", "")
EndIf
Next
Return $default
EndFunc ;==>OptArgs
Voilà
Merci de vos commentaires