IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Conception d'un script de sauvegarde avec envoie de mail en cas d'échec


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Points : 28
    Points
    28
    Par défaut Conception d'un script de sauvegarde avec envoie de mail en cas d'échec
    Bonjour,

    Donc je suis entrain de mettre un place un script qui sauvegarde un ordinateur avec présence de log si cette sauvegarde échoue je veut envoyé un email et c'est là que ça plante. j'ai récupérer un script pour l'envoie des email qui fonctionne très bien puis je l'ai incorporé à mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    'Renomage du fichier de log---------------V
    ON ERROR RESUME NEXT
    for i = 1 to 10
    	'wscript.echo i
    	Set fso=CreateObject("Scripting.FileSystemObject")
    	fso.CopyFile "C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup0" & i &".log", "C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup.log",TRUE
    next
     
    'Convertion du fichier de USC-2 à UTF-8---------------V
    Dim wshShell
    Set wshShell = CreateObject("WScript.Shell")
    wshShell.Run "cmd /c iconv -f UCS-2-INTERNAL -t UTF-8 ""C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup.log"" > ""C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup2.log""", 0, True
    'MsgBox "Conversion Finie"
    Set wshShell = Nothing
     
     
     
    'Lecture du fichier & envoie de mail---------------V
    mot1 = "L'opération ne s'est pas terminée correctement."
    mot2 = "L'opération n'a pas été effectuée car le média spécifié n'a pas été trouvé."
    fichier_lecture_1 = "C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup2.log"
    'wscript.echo fichier_lecture_1
    Set fso = CreateObject("Scripting.FileSystemObject")
    set fichier_lecture_2 = fso.opentextfile(fichier_lecture_1, 1, true, ModeUnicode)
    do until fichier_lecture_2.atendofstream
    chaine = fichier_lecture_2.readline()
    'wscript.echo chaine
    if instr(1, chaine, mot1) > 0 then
    'wscript.echo "mail en cour"
    'Si erreur envoie d'un email
    	Public Sub SendMail(Expediteur,Destinataire,Sujet,Message,Smtp,Port)
    		Set Mail = CreateObject("CDO.Message")
    		With Mail
    			.From=Expediteur
    			.To=Destinataire
    			.Subject=Sujet
    			.TextBody=Message
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Smtp
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port
    			.Configuration.Fields.Update
    			.Send
    		End With
    	End Sub
    	SendMail "aurelien@aide-info.fr","aurelien@aide-info.fr","Erreur","Erreur","smtp.orange.fr","25"
    	wscript.echo "mail finis"
    Elseif
    if instr(1, chaine, mot2) > 0 then
    'wscript.echo "mail en cour"
    'Si erreur envoie d'un email
    	Public Sub SendMail(Expediteur,Destinataire,Sujet,Message,Smtp,Port)
    		Set Mail = CreateObject("CDO.Message")
    		With Mail
    			.From=Expediteur
    			.To=Destinataire
    			.Subject=Sujet
    			.TextBody=Message
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Smtp
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port
    			.Configuration.Fields.Update
    			.Send
    		End With
    	End Sub
    	SendMail "ScriptSAV@noreply.net","aurelien@aide-info.fr","Erreur de sauvegarde","Erreur de sauvegarde","smtp.orange.fr","25"
    	'wscript.echo "mail finis"
    end if
    loop
    fichier_lecture_2.close 
    set fichier_lecture_2 = nothing
    set fso = nothing
    Mais lorsque je le lance j'ai une erreur ligne 30 caractère 9 : erreur de syntaxe

    Et lorsque je texte la function SendMail seule pas de problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    	Public Sub SendMail(Expediteur,Destinataire,Sujet,Message,Smtp,Port)
    		Set Mail = CreateObject("CDO.Message")
    		With Mail
    			.From=Expediteur
    			.To=Destinataire
    			.Subject=Sujet
    			.TextBody=Message
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Smtp
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port
    			.Configuration.Fields.Update
    			.Send
    		End With
    	End Sub
    	SendMail "ScriptSAV@noreply.net","aurelien@aide-info.fr","Erreur de sauvegarde","Erreur de sauvegarde","smtp.orange.fr","25"
    Donc je comprend vraiment pas pourquoi.
    Merci d'avance pour vos réponses.

    PS: je suis pas très fort en vb la plupart du script sont des reprisent de différentes solution trouvé sur le net.
    PS2 : ce n'est q'un morceau du script, il est composé de trois fichiers en entier.

  2. #2
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Salut.

    Je pense que ton problème est l'endroit où tu définis ta fonction, cad dans ta condition if.

    Essaie en la mettant en début de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Public Sub SendMail(Expediteur,Destinataire,Sujet,Message,Smtp,Port)
    	Set Mail = CreateObject("CDO.Message")
    	With Mail
    		.From=Expediteur
    		.To=Destinataire
    		.Subject=Sujet
    		.TextBody=Message
    		.Configuration.Fields.Item _
    		("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    		.Configuration.Fields.Item _
    		("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Smtp
    		.Configuration.Fields.Item _
    		("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port
    		.Configuration.Fields.Update
    		.Send
    	End With
    End Sub
     
    'Renomage du fichier de log---------------V
    ON ERROR RESUME NEXT
    for i = 1 to 10
    	'wscript.echo i
    	Set fso=CreateObject("Scripting.FileSystemObject")
    	fso.CopyFile "C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup0" & i &".log", "C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup.log",TRUE
    next
     
    'Convertion du fichier de USC-2 à UTF-8---------------V
    Dim wshShell
    Set wshShell = CreateObject("WScript.Shell")
    wshShell.Run "cmd /c iconv -f UCS-2-INTERNAL -t UTF-8 ""C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup.log"" > ""C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup2.log""", 0, True
    'MsgBox "Conversion Finie"
    Set wshShell = Nothing
     
     
     
    'Lecture du fichier & envoie de mail---------------V
    mot1 = "L'opération ne s'est pas terminée correctement."
    mot2 = "L'opération n'a pas été effectuée car le média spécifié n'a pas été trouvé."
    fichier_lecture_1 = "C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup2.log"
    'wscript.echo fichier_lecture_1
    Set fso = CreateObject("Scripting.FileSystemObject")
    set fichier_lecture_2 = fso.opentextfile(fichier_lecture_1, 1, true, ModeUnicode)
    do until fichier_lecture_2.atendofstream
    chaine = fichier_lecture_2.readline()
    'wscript.echo chaine
    if instr(1, chaine, mot1) > 0 then
    'wscript.echo "mail en cour"
    'Si erreur envoie d'un email
    	SendMail "aurelien@aide-info.fr","aurelien@aide-info.fr","Erreur","Erreur","smtp.orange.fr","25"
    	wscript.echo "mail finis"
    Elseif
    if instr(1, chaine, mot2) > 0 then
    'wscript.echo "mail en cour"
    'Si erreur envoie d'un email
    	SendMail "ScriptSAV@noreply.net","aurelien@aide-info.fr","Erreur de sauvegarde","Erreur de sauvegarde","smtp.orange.fr","25"
    	'wscript.echo "mail finis"
    end if
    loop
    fichier_lecture_2.close 
    set fichier_lecture_2 = nothing
    set fso = nothing

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Tu sembles ne pas avoir les bases VBS.
    Si tu as besoins (ou veux) de continuer à faire du VBS, je te conseil de lire l'introduction au langage VBS écrit par Serge Tahé
    Tutorial que tu retrouves sur developpez.com

    Pour ton problème, la solution de pitchalov devrait le résoudre.
    La déclaration d'une fonction ne peut pas se faire dans une If.
    Et après avoir déclaré, et écrit la fonction, il faut l'appeller pour pouvoir l'utiliser.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Salut,

    Donc après une bonne nuit de sommeil je me suis remis dessus et j'ai trouvé.
    Premièrement j'avais une erreur dans mon ELSEIF vraiment très bête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ElseIf
    If instr(1, chaine, mot2) > 0 then
    Que j'ai corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ElseIf instr(1, chaine, mot2) > 0 then
    Mais cela n'a pas résolue mon problème alors j'ai un peu plus cherché sur les faq, les cours et les tutos de vbscript mais rien de concluant. D'un seul coup j'ai eu l'idée de sortir ma fonction de la condition (comme c'est un fonction elle peut être placé n'importe où) et là miracle cela marche.

    Donc je place ici tout mon script pour ceux que cela intéresse.

    MAJ 12/06/2009 16:30 :
    - Suppression des fonctions pour une seule commune.
    - Remplacement du dossier par Administrateur
    - Ajout d'un mail pour 3 erreurs et non 2
    ---------------------------------------------------------

    BUT: Sauvegarder des fichier où un ordinateur sur un support USB via NT backup et en cas d'échec envoie d'un email.
    Contrainte : NT backup gènère des log au format UCS-2 illisible pour vbscript. Vous devez installer iconv.exe, seulement le bin (dans system32), vous pouvez trouvé les fichier nécessaire ici
    CODE :

    VBS-1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Supression des anciens log---------------V
    Const DeleteReadOnly = True
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ON ERROR RESUME NEXT
    FSO.DeleteFile("c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\*.log"), DeleteReadOnly
     
    'Lancement de la sauvegarde---------------V
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Return = WshShell.Run("cmd " & WScript.ScriptFullName)
    WScript.Sleep 100
    WshShell.SendKeys """c:\WINDOWS\system32\backup.bat"""
    WScript.Sleep 100
    WshShell.SendKeys"{enter}"
    BAT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo off
    	for /f "tokens=1-4 delims=/ " %%i in ('date /t') do set dt=%%i-%%j-%%k-%%l 
    	for /f "tokens=1" %%i in ('time /t') do set tm=-%%i
    	set tm=%tm::=-%
    	set dtt=%dt%%tm%
    	C:\WINDOWS\system32\ntbackup.exe backup "@C:\Documents and Settings\Aurelien\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\test.bks" /n "%computername%-%dtt%" /d "daily %dtt%" /v:yes /r:no /rs:no /hc:off /m normal /j "daily %dtt%" /l:s /f "F:\sauvegarde.bkf"
    	2.vbs
    exit
    VBS-2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    'Renomage du fichier de log---------------V
    ON ERROR RESUME NEXT
    for i = 1 to 10
    	'wscript.echo i
    	Set fso=CreateObject("Scripting.FileSystemObject")
    	fso.CopyFile "c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup0" & i &".log", "c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup.log",TRUE
    next
    WScript.Sleep 100
     
    'Convertion du fichier de USC-2 à UTF-8---------------V
    Dim wshShell
    Set wshShell = CreateObject("WScript.Shell")
    wshShell.Run "cmd /c iconv -f UCS-2-INTERNAL -t UTF-8 ""c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup.log"" > ""c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup2.log""", 0, True
    'MsgBox "Conversion Finie"
    Set wshShell = Nothing
    WScript.Sleep 100
     
    'Déclaration de la fonction d'envoie de mail
    Public Sub SendMail(Expediteur,Destinataire,Sujet,Message,Smtp,Port)
    		Set Mail = CreateObject("CDO.Message")
    		With Mail
    			.From=Expediteur
    			.To=Destinataire
    			.Subject=Sujet
    			.TextBody=Message
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Smtp
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port
    			.Configuration.Fields.Update
    			.Send
    		End With
    End Sub
     
     
    'Lecture du fichier & envoie de mail---------------V
    mot1 = "L'opération ne s'est pas terminée correctement."
    mot2 = "L'opération n'a pas été effectuée car le média spécifié n'a pas été trouvé."
    mot3 = "Le média requis n'a pas pu être monté. L'opération a été abandonnée."
    fichier_lecture_1 = "c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup2.log"
    'wscript.echo fichier_lecture_1
    Set fso = CreateObject("Scripting.FileSystemObject")
    set fichier_lecture_2 = fso.opentextfile(fichier_lecture_1, 1, true, ModeUnicode)
    do until fichier_lecture_2.atendofstream
    chaine = fichier_lecture_2.readline()
    'wscript.echo chaine
    if instr(1, chaine, mot1) > 0 then
    wscript.echo "mail 1 en cour"
    'Si erreur envoie d'un email
    	SendMail "ErreurSAV@noreply.net","aurelien@aide-info.fr","Erreur de sauvegarde chez Aide-info","Impossible d'effectuer la sauvegarde car : L'opération ne s'est pas terminée correctement.","smtp.orange.fr","25"
    	'SendMail "ErreurSAV@noreply.net","franck@aide-info.fr","Erreur de sauvegarde chez X","Impossible d'effectuer la sauvegarde car : L'opération ne s'est pas terminée correctement.","smtp.orange.fr","25"
    	'wscript.echo "mail finis"
    ElseIf instr(1, chaine, mot2) > 0 then
    wscript.echo "mail 2 en cour"
    'Si erreur envoie d'un email
    	SendMail "ErreurSAV@noreply.net","aurelien@aide-info.fr","Erreur de sauvegarde chez Aide-info","Impossible d'effectuer la sauvegarde car : L'opération n'a pas été effectuée car le média spécifié n'a pas été trouvé.","smtp.orange.fr","25"
    	'SendMail "ErreurSAV@noreply.net","franck@aide-info.fr","Erreur de sauvegarde chez Aide-info","Impossible d'effectuer la sauvegarde car : L'opération n'a pas été effectuée car le média spécifié n'a pas été trouvé.","smtp.orange.fr","25"
    	'wscript.echo "mail finis"
    ElseIf instr(1, chaine, mot3) > 0 then
    'wscript.echo "mail 3 en cour"
    'Si erreur envoie d'un email
    	SendMail "ErreurSAV@noreply.net","aurelien@aide-info.fr","Erreur de sauvegarde chez Aide-info","Impossible d'effectuer la sauvegarde car : Le média requis n'a pas pu être monté. L'opération a été abandonnée.","smtp.orange.fr","25"
    	'SendMail "ErreurSAV@noreply.net","franck@aide-info.fr","Erreur de sauvegarde chez Aide-info","Impossible d'effectuer la sauvegarde car : Le média requis n'a pas pu être monté. L'opération a été abandonnée.","smtp.orange.fr","25"
    	'wscript.echo "mail finis"
    End If
    loop
    fichier_lecture_2.close 
    set fichier_lecture_2 = nothing
    set fso = nothing
    Information : Ce script est séparer en trois partie car le backup prenant du temps ne doit pas être dépasser par les autres instruction du script et le temps et variable donc impossible de faire une pause de X secondes alors que le bat ne lance l'instruction seulement à la fin de l'instruction en cours.

    Adaptation pour bande magnétique à la place de support USB (exemple pris avec un DAT72).


    BUT: Sauvegarder des fichier où un ordinateur sur un support magnétique via NT backup et en cas d'échec envoie d'un email.
    Contrainte :NT backup gènère des log au format UCS-2 illisible pour vbscript. Vous devez installer iconv.exe, seulement le bin (dans system32), vous pouvez trouvé les fichier nécessaire ici
    CODE :. Ormis le problème de format des log, sur bande magnétique NT backup est plus lent à monté le média à tel point qu'il plante donc règler le problème il faut lancé à l'avance NT backup sans aucune action via une tache planifié par exemple ( au moins 15 secondes avant la sauvegarde). Et pour fermer ce NT backup qui c'est ouvert il suffit d'installer psstools fournit par Microsoft ici, dans system 32

    CODE :

    VBS-1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Supression des anciens log---------------V
    Const DeleteReadOnly = True
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ON ERROR RESUME NEXT
    FSO.DeleteFile("c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\*.log"), DeleteReadOnly
     
    'Lancement de la sauvegarde---------------V
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Return = WshShell.Run("cmd " & WScript.ScriptFullName)
    WScript.Sleep 100
    WshShell.SendKeys """c:\WINDOWS\system32\backup.bat"""
    WScript.Sleep 100
    WshShell.SendKeys"{enter}"
    BAT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo off
    	for /f "tokens=1-4 delims=/ " %%i in ('date /t') do set dt=%%i-%%j-%%k-%%l 
    	for /f "tokens=1" %%i in ('time /t') do set tm=-%%i
    	set tm=%tm::=-%
    	set dtt=%dt%%tm%
    	c:\WINDOWS\system32\ntbackup.exe backup "@c:\documents and settings\Administrateur\local settings\application data\microsoft\windows nt\ntbackup\data\Sauvegarde.bks" /n "%computername%-%dtt%" /d "daily %dtt%" /v:yes /r:no /rs:no /hc:off  /m normal /j "daily %dtt%" /l:f /p "4mm dds" /um
    	rsm eject /pf"%computername%-%dtt% - 1" /astart
    	pskill ntbackup \\Machine_où_est_lancé_NT_backup
    exit
    VBS-2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    'Renomage du fichier de log---------------V
    ON ERROR RESUME NEXT
    for i = 1 to 10
    	'wscript.echo i
    	Set fso=CreateObject("Scripting.FileSystemObject")
    	fso.CopyFile "c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup0" & i &".log", "c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup.log",TRUE
    next
    WScript.Sleep 100
     
    'Convertion du fichier de USC-2 à UTF-8---------------V
    Dim wshShell
    Set wshShell = CreateObject("WScript.Shell")
    wshShell.Run "cmd /c iconv -f UCS-2-INTERNAL -t UTF-8 ""c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup.log"" > ""c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup2.log""", 0, True
    'MsgBox "Conversion Finie"
    Set wshShell = Nothing
    WScript.Sleep 100
     
    'Déclaration de la fonction d'envoie de mail
    Public Sub SendMail(Expediteur,Destinataire,Sujet,Message,Smtp,Port)
    		Set Mail = CreateObject("CDO.Message")
    		With Mail
    			.From=Expediteur
    			.To=Destinataire
    			.Subject=Sujet
    			.TextBody=Message
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Smtp
    			.Configuration.Fields.Item _
    			("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port
    			.Configuration.Fields.Update
    			.Send
    		End With
    End Sub
     
     
    'Lecture du fichier & envoie de mail---------------V
    mot1 = "L'opération ne s'est pas terminée correctement."
    mot2 = "L'opération n'a pas été effectuée car le média spécifié n'a pas été trouvé."
    mot3 = "Le média requis n'a pas pu être monté. L'opération a été abandonnée."
    fichier_lecture_1 = "c:\Documents and Settings\Administrateur\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\backup2.log"
    'wscript.echo fichier_lecture_1
    Set fso = CreateObject("Scripting.FileSystemObject")
    set fichier_lecture_2 = fso.opentextfile(fichier_lecture_1, 1, true, ModeUnicode)
    do until fichier_lecture_2.atendofstream
    chaine = fichier_lecture_2.readline()
    'wscript.echo chaine
    if instr(1, chaine, mot1) > 0 then
    wscript.echo "mail 1 en cour"
    'Si erreur envoie d'un email
    	SendMail "ErreurSAV@noreply.net","aurelien@aide-info.fr","Erreur de sauvegarde chez Aide-info","Impossible d'effectuer la sauvegarde car : L'opération ne s'est pas terminée correctement.","smtp.orange.fr","25"
    	'SendMail "ErreurSAV@noreply.net","franck@aide-info.fr","Erreur de sauvegarde chez X","Impossible d'effectuer la sauvegarde car : L'opération ne s'est pas terminée correctement.","smtp.orange.fr","25"
    	'wscript.echo "mail finis"
    ElseIf instr(1, chaine, mot2) > 0 then
    wscript.echo "mail 2 en cour"
    'Si erreur envoie d'un email
    	SendMail "ErreurSAV@noreply.net","aurelien@aide-info.fr","Erreur de sauvegarde chez Aide-info","Impossible d'effectuer la sauvegarde car : L'opération n'a pas été effectuée car le média spécifié n'a pas été trouvé.","smtp.orange.fr","25"
    	'SendMail "ErreurSAV@noreply.net","franck@aide-info.fr","Erreur de sauvegarde chez Aide-info","Impossible d'effectuer la sauvegarde car : L'opération n'a pas été effectuée car le média spécifié n'a pas été trouvé.","smtp.orange.fr","25"
    	'wscript.echo "mail finis"
    ElseIf instr(1, chaine, mot3) > 0 then
    'wscript.echo "mail 3 en cour"
    'Si erreur envoie d'un email
    	SendMail "ErreurSAV@noreply.net","aurelien@aide-info.fr","Erreur de sauvegarde chez Aide-info","Impossible d'effectuer la sauvegarde car : Le média requis n'a pas pu être monté. L'opération a été abandonnée.","smtp.orange.fr","25"
    	'SendMail "ErreurSAV@noreply.net","franck@aide-info.fr","Erreur de sauvegarde chez Aide-info","Impossible d'effectuer la sauvegarde car : Le média requis n'a pas pu être monté. L'opération a été abandonnée.","smtp.orange.fr","25"
    	'wscript.echo "mail finis"
    End If
    loop
    fichier_lecture_2.close 
    set fichier_lecture_2 = nothing
    set fso = nothing
    Information : Pour adapter ce script selon votre moèle de lecteur de bande il suffit de modifier ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\WINDOWS\system32\ntbackup.exe backup "@c:\documents and settings\Administrateur\local settings\application data\microsoft\windows nt\ntbackup\data\Sauvegarde.bks" /n "%computername%-%dtt%" /d "daily %dtt%" /v:yes /r:no /rs:no /hc:off  /m normal /j "daily %dtt%" /l:f /p "4mm dds" /um
    Pour trouver le nom de votre modèle de lecteur vous pouvez aller dans NTbackup et dans l'onglet sauvegarder selectionner votre lecteur dans "Effetuer la sauvegarde vers"

    PS: Je n'affirme pas que ce script est parfait il peut-être et sans doute des amélioration possible.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2008
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Tu sembles ne pas avoir les bases VBS.
    Si tu as besoins (ou veux) de continuer à faire du VBS, je te conseil de lire l'introduction au langage VBS écrit par Serge Tahé
    Tutorial que tu retrouves sur developpez.com

    Pour ton problème, la solution de pitchalov devrait le résoudre.
    La déclaration d'une fonction ne peut pas se faire dans une If.
    Et après avoir déclaré, et écrit la fonction, il faut l'appeller pour pouvoir l'utiliser.
    Oups, j'écrivais mon message en même temps que le tiens.

    Citation Envoyé par ced600 Voir le message
    Tu sembles ne pas avoir les bases VBS.
    Cela je le sais et je l'ai même dis.

    Citation Envoyé par ced600 Voir le message
    La déclaration d'une fonction ne peut pas se faire dans une If.
    Et après avoir déclaré, et écrit la fonction, il faut l'appeler pour pouvoir l'utiliser.
    Je savais que après avoir déclarer n'importe quel fonction il faut l'appeler (c'est comme cela dans n'importe que langage de programmation). Mais je ne savais pas que ne l'on pouvais pas déclarer une fonction dans un IF, ce que je viens d'apprendre ce matin.

    Merci quand même pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script shell pour l'envoi de mail avec piéce jointe
    Par 20132014 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 24/11/2013, 13h49
  2. Script de sauvegarde avec la date - Problème de caractères
    Par MonsieurPouet dans le forum Programmation et administration système
    Réponses: 7
    Dernier message: 20/12/2011, 19h36
  3. script ping avec envoi de mail
    Par yoh852 dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 14/11/2011, 17h03
  4. Script de sauvegarde avec mise en place de l'ARCHIVELOG
    Par phil4444 dans le forum Administration
    Réponses: 4
    Dernier message: 24/04/2008, 17h35
  5. Problème avec envoi de mail et fichier joint
    Par LFC dans le forum Modules
    Réponses: 5
    Dernier message: 20/05/2006, 20h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo