Sauvegarde avec envoi de mail pour confirmation?

Le Forum Windows XP
Scanner Windows pour détecter les erreurs de registre

Ce que nous vous conseillons :

1. Lisez les réponses ci-dessous où vous trouverez des conseils et de l'aide de la part des autres utilisateurs.

2. Avant de faire des modifications sur votre système ou d'installer des logiciels, nous vous recommandons
    fortement de cliquer ici pour scanner Windows afin de détecter les erreurs de registre.



Messagepar pcsystemd » 22 Juil 2007, 13:39

Bonjour,

j'ai mis en place une tache planifiée sous Windows qui copie des fichiers sur un autre poste afin de les sauvegarder . Le souci c'est que je ne peux pas savoir si la tâche c'est bien lancée ou pas .

C'est pourquoi je souhaiterais pouvoir recevoir un mail m'indiquant soit ok quand la tache c'est correctement déroulée soit un message quand la tâche ne c'est pas lancée ou pas terminé correctement.

Est il possible de faire cela?

Et si c'est oui avec quel outil (fichier BATCH ou autres)?

Merci a tous pour l'aide que vous m'apporterer. ;)
pcsystemd
 
Messages: 14
Inscrit le: 22 Juil 2007, 13:35

Messagepar JoShuA » 22 Juil 2007, 14:09

Bonjour,

Peux tu poster ici ton script de copie ? car suivant la manière de faire la réponse pourra différer.

Pour envoyer ton email tu auras besoin d'un programme add-hoc du style de blat ou Sendmail
Avatar de l’utilisateur
JoShuA
Modérateur
 
Messages: 7246
Inscrit le: 02 Jan 2002, 15:37
Localisation: IdF

Messagepar pcsystemd » 22 Juil 2007, 14:35

Désole mais pour la premiere tache planifiée c'est un .bkf c'est une tache que j'ai crée avec le gestionnaire de sauvegarde de Windows donc je ne peux pas te le poster.
Par contre pour le script de sauvegarde que j'ai mis au demarrage du poste, le voici.

Code: Tout sélectionner
:: ^01 est remplace par le nom de la machine server

@echo off
@prompt $s

::declaration variables
::sauve_path variable à modifier pour changer le chemin du dossier sauve
@set sauve_path=program filessauve
@set sauve_srv_path=^01

if exist "C:%sauve_path%BatCourantSecours.bat" goto C00
if exist "D:%sauve_path%BatCourantSecours.bat" goto D00
goto ERROR

:C00
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Copie de fichiers en cours                            ]
@ECHO .       [ Veuillez patienter...                                 ]
@ECHO .       [-------------------------------------------------------]

@XCOPY \%sauve_srv_path%sauve*.* "C:%sauve_path%Secours" /S /E /D /C /Y
@XCOPY \%sauve_srv_path%photos*.* "C:%sauve_path%Secours" /S /E /D /C /Y
@XCOPY \%sauve_srv_path%documents*.* "C:%sauve_path%Secours" /S /E /D /C /Y
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Operation terminee                                    ]
@ECHO .       [-------------------------------------------------------]
@PAUSE
GOTO END

:D00
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Copie de fichiers en cours                            ]
@ECHO .       [ Veuillez patienter...                                 ]
@ECHO .       [-------------------------------------------------------]

@XCOPY \%sauve_srv_path%sauve*.* "D:%sauve_path%Secours" /S /E /D /C /Y
@XCOPY \%sauve_srv_path%photos*.* "D:%sauve_path%Secours" /S /E /D /C /Y
@XCOPY \%sauve_srv_path%documents*.* "D:%sauve_path%Secours" /S /E /D /C /Y
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Operation terminee                                    ]
@ECHO .       [-------------------------------------------------------]
@PAUSE
GOTO END
:END
EXIT

Merci
pcsystemd
 
Messages: 14
Inscrit le: 22 Juil 2007, 13:35

Messagepar JoShuA » 22 Juil 2007, 15:01

Voici un exemple avec sendmail tu devrait pouvoir t'en inspirer :

Code: Tout sélectionner
:: ^01 est remplace par le nom de la machine server

@echo off
@prompt $s

::declaration variables
::sauve_path variable à modifier pour changer le chemin du dossier sauve
@set sauve_path=program filessauve
@set sauve_srv_path=^01

:: Mail
set mail_server=localhost
set mail_to=admin@localhost
set mail_from=%COMPUTERNAME%@localhost

if exist "C:%sauve_path%BatCourantSecours.bat" goto C00
if exist "D:%sauve_path%BatCourantSecours.bat" goto D00
goto ERROR

set ERREUR=0

:C00
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Copie de fichiers en cours                            ]
@ECHO .       [ Veuillez patienter...                                 ]
@ECHO .       [-------------------------------------------------------]
1
@XCOPY \%sauve_srv_path%sauve*.* "C:%sauve_path%Secours" /S /E /D /C /Y  2> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%sauve_srv_path%photos*.* "C:%sauve_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%sauve_srv_path%documents*.* "C:%sauve_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Operation terminee                                    ]
@ECHO .       [-------------------------------------------------------]
GOTO END
:D00
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Copie de fichiers en cours                            ]
@ECHO .       [ Veuillez patienter...                                 ]
@ECHO .       [-------------------------------------------------------]
@XCOPY \%sauve_srv_path%sauve*.* "D:%sauve_path%Secours" /S /E /D /C /Y 2> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%sauve_srv_path%photos*.* "D:%sauve_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%sauve_srv_path%documents*.* "D:%sauve_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Operation terminee                                    ]
@ECHO .       [-------------------------------------------------------]
GOTO END
:END
IF %ERREUR% LSS 1 goto QUIT
set YYYYMMDD=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
sendmail /s %mail_server% /f %mail_from% /t %mail_to% /j "[%COMPUTERNAME] Erreur de sauvegarde %YYYYMMDD% " /m %TMP%backup.log
:QUIT
EXIT
Avatar de l’utilisateur
JoShuA
Modérateur
 
Messages: 7246
Inscrit le: 02 Jan 2002, 15:37
Localisation: IdF

Messagepar pcsystemd » 22 Juil 2007, 16:15

Merci énormément pour ta rapidité et ton aide très très précieuse, mais peux tu m'expliquer un peu les lignes que tu as ajouté car je souhaite comprendre et non juste faire du copier coller.
Par exemple :

Déja je supose que je dois installé sendmail sur les pc ou le script se lance au démarrage?

Code: Tout sélectionner
:: Mail
set mail_server=localhost
set mail_to=admin@localhost
set mail_from=%COMPUTERNAME%@localhost

je dois laissé localhost ?

la variable %COMPUTERNAME%, comment il récupére la valeur?

Code: Tout sélectionner
@XCOPY \%sauve_srv_path%sauve*.* "C:%sauve_path%Secours" /S /E /D /C /Y  2> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%sauve_srv_path%photos*.* "C:%sauve_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%sauve_srv_path%documents*.* "C:%sauve_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1

Est ce normal qu'il n'y ai qu'un
Code: Tout sélectionner
>

avant %TMP% sur la premiére ligne et deux
Code: Tout sélectionner
>>

sur les autres?

Je supose que backup.log est le fichier qui contient le résultat et qui est envoyé en piéce jointe?

D'autre part comme je l'ai dit c'est un fichier BAT qui se lance au démarrage du poste (Fenêtre DOS réduite dans la barre des tâches), hors quelques fois les utilisateurs ferment cette fenêtre avant la fin de la sauvegarde. est ce que je le verrais dans le mail qui me sera envoyé? et si ce n'est pas le cas connais tu un moyen pour cacher la fenêtre DOS ou bien que cela me l'indique dans le mail par exemple qouq la forme : "Fenêtre fermée par l'utilisateur"

Merci encore franchement car j'ai rarement eu réponse aussi rapide et surtout compréhensible.
Dernière édition par pcsystemd le 22 Juil 2007, 16:16, édité 1 fois au total.
pcsystemd
 
Messages: 14
Inscrit le: 22 Juil 2007, 13:35

Messagepar JoShuA » 22 Juil 2007, 16:21

Je vais essayer de te répondre dans l'ordre :

* Sendmail doit être installer sur tous les postes dans un répertoire du path de préférence
* Tu dois remplacer admin@localhost par ton email
* %COMPUTERNAME% est une variable d'environnement système et correspond au nom de la machine
* 1 seul > réinitialise le fichier à vide avant d'écrire
* 2 fois la caractère > correspond à un append (c'est à dire écrit à la suite)
* le fichier backup.log contient les erreurs des commandes XCOPY (on récupere les erreurs en mettant le 2 dans le > ou le >>)

Juste par curiosité, tu es dans un domaine ?
Avatar de l’utilisateur
JoShuA
Modérateur
 
Messages: 7246
Inscrit le: 02 Jan 2002, 15:37
Localisation: IdF

Messagepar JoShuA » 22 Juil 2007, 16:29

Pourquoi ne pas utiliser un "vrai" logiciel de backup ?
Avatar de l’utilisateur
JoShuA
Modérateur
 
Messages: 7246
Inscrit le: 02 Jan 2002, 15:37
Localisation: IdF

Messagepar pcsystemd » 22 Juil 2007, 17:06

merci ,

non je ne suis pas dans un domaine.

Pour répondre a ta question sur :

Pourquoi ne pas utiliser un logiciel Backup?

Tout simplement parce que je dois dans le cadre d'un projet , utiliser le fichier BAT existant que je t'ai mis en copie et y implanter le moyen de savoir si le Xcopy c'est bien déroulé et cela pour tous les jours et pour chaque poste.

Dans ces deux lignes je dois laissé localhost ou le remplacer par autre chose?
Code: Tout sélectionner
set mail_server=localhost
set mail_from=%COMPUTERNAME%@localhost

J'ai vu que pour envoyer une piéce jointe avec SendMail c'est loption /p<piécejointe>.Est ce exact si tu connais bien sur.

Autre chose en espérant que je n'abuse pas trop. Je souhaiterais que dans le mail que je reçois apparaisse l'IP du poste. Sais tu qu'elle variable ou qu'elle commande dois je utilisé dans mon fichier?

Enfin ,peux tu m'indiquer ou je peux me documenter sur justement les lignes de commandes comme errorlevel,computername etc..

Merci encore pour le temps que tu m'a accordé.
Dernière édition par pcsystemd le 22 Juil 2007, 17:28, édité 1 fois au total.
pcsystemd
 
Messages: 14
Inscrit le: 22 Juil 2007, 13:35

Messagepar JoShuA » 22 Juil 2007, 23:41

C'est bein dommage que l'on t'impose les fichiers batchs dans le cadre de ton projet. Mais rien ne t'empêche d'écrire dans ton mémoire qu'il y a d'autres solutions qui seraient plus appropriées dans un environnement de production.

Mail_servert doit contenir l'adresse IP ou le nom (résolu) du serveur mail.

Mail_from peut rester ainsi s'il n'y a pas de filtrage du champs from sur le MTA à vérifier auprès du postmaster

L'option /p n'existe pas dans la version de sendmail que je te propose mais il existe d'autre portage de sendmail pour Windows.

Le nom de la machine n'est pas suffisant ?
Sinon pour mettre l'adresse IP dans une variable IP :

Code: Tout sélectionner
for /f "tokens=1-2 delims=:" %%i in ('ipconfig ^| find "Address"') do set IP=%%j
Avatar de l’utilisateur
JoShuA
Modérateur
 
Messages: 7246
Inscrit le: 02 Jan 2002, 15:37
Localisation: IdF

Messagepar pcsystemd » 23 Juil 2007, 05:45

encore une petite précision car je dois être bouché puisque je n'arrive pas à comprendre une petite chose.
Tu écris
Mail_servert doit contenir l'adresse IP ou le nom (résolu) du serveur mail.

C'est cette phrase que je ne comprends pas car il faut l'ip du serveur de mail mais c'est l'ip du poste ou du serveur de mail du FAI. De plus tu parle du nom (résolu), tu veux dire quoi par le nom(résolu) du serveur.

Merci milles fois
pcsystemd
 
Messages: 14
Inscrit le: 22 Juil 2007, 13:35

Messagepar JoShuA » 23 Juil 2007, 21:02

Bonsoir,

Si tu n'as pas de serveur mail sur ton SI alors oui celui de ton FAI

exemple : smtp.free.fr
Avatar de l’utilisateur
JoShuA
Modérateur
 
Messages: 7246
Inscrit le: 02 Jan 2002, 15:37
Localisation: IdF

Messagepar pcsystemd » 24 Juil 2007, 06:27

Merci j'ai compris cette fois.
Par contre j'ai testé mon fichier Bat mais il ne se lance pas. Je ne vois pas ou cela cloche car j'ai bien mis le fichier ainsi que l'exe de senmail dans le même dossier.

Aurais tu une idée?

Apparement je l'ai testé avec Powerbatch, et j'ai deux erreurs :

Identificateur non déclaré :'error'
Identificateur non déclaré :'quit'

Code: Tout sélectionner
:: ^01 est remplace par le nom de la machine server

@echo off
@prompt $s

::declaration variables
::testsecours_path variable à modifier pour changer le chemin du dossier testsecours
@set testsecours_path=program filestestsecours
@set testsecours_srv_path=^01

:: Mail
set mail_server=smtp.exemple.fr
set mail_to=toto@exemple.com
set mail_from=%COMPUTERNAME%@exemple.com

if exist "C:%testsecours_path%BatCourantSecours.bat" goto C00
if exist "D:%testsecours_path%BatCourantSecours.bat" goto D00
goto ERROR

set ERREUR=0

:C00
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Copie de fichiers en cours                            ]
@ECHO .       [ Veuillez patienter...                                 ]
@ECHO .       [-------------------------------------------------------]
1
@XCOPY \%testsecours_srv_path%testsecours*.* "C:%testsecours_path%Secours" /S /E /D /C /Y  2> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%testsecours_srv_path%photos*.* "C:%testsecours_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%testsecours_srv_path%documents*.* "C:%testsecours_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Operation terminee                                    ]
@ECHO .       [-------------------------------------------------------]
GOTO END
:D00
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Copie de fichiers en cours                            ]
@ECHO .       [ Veuillez patienter...                                 ]
@ECHO .       [-------------------------------------------------------]
@XCOPY \%testsecours_srv_path%testsecours*.* "D:%testsecours_path%Secours" /S /E /D /C /Y 2> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%testsecours_srv_path%photos*.* "D:%testsecours_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%testsecours_srv_path%documents*.* "D:%testsecours_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Operation terminee                                    ]
@ECHO .       [-------------------------------------------------------]
GOTO END
:END
IF %ERREUR% LSS 1 goto QUIT
set YYYYMMDD=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
sendmail /s %mail_server% /f %mail_from% /t %mail_to% /j "[%COMPUTERNAME] Erreur de testsecoursgarde %YYYYMMDD% " /m %TMP%backup.log

::Recupere IP du poste
for /f "tokens=1-2 delims=:" %%i in ('ipconfig ^| find "Address"') do set IP=%%j
:QUIT
EXIT

Merci
Dernière édition par pcsystemd le 24 Juil 2007, 06:49, édité 1 fois au total.
pcsystemd
 
Messages: 14
Inscrit le: 22 Juil 2007, 13:35

Messagepar JoShuA » 24 Juil 2007, 07:19

le "tag" :ERROR n'existe pas en effet, il faut le créer

Essaye de renommer QUIT en QUITTER, car un flag ne doit pas voir le nom d'une fonction
Avatar de l’utilisateur
JoShuA
Modérateur
 
Messages: 7246
Inscrit le: 02 Jan 2002, 15:37
Localisation: IdF

Messagepar pcsystemd » 24 Juil 2007, 07:31

Merci , je vais testé.
pcsystemd
 
Messages: 14
Inscrit le: 22 Juil 2007, 13:35

Messagepar pcsystemd » 24 Juil 2007, 09:58

Bon he bien j'ai testé mais cela ne fonctionne pas car je ne reçois pas de mail. J'ai fait en sorte qu'il y ai une erreur de copie mais je n'ai rien reçu. J'ai placé le fichier SendMail.exe dans WindowsSystem32. Voila le fichier que j'utilise :

Code: Tout sélectionner
:: ^01 est remplace par le nom de la machine server

@echo off
@prompt $s

::declaration variables
::Exemple_path variable à modifier pour changer le chemin du dossier Exemple
@set Exemple_path=program filesExemple
@set Exemple_srv_path=^01

:: Mail
@set mail_server=smtp.exemple.fr
@set mail_to=toto@Exemple-fr
@set mail_from=%COMPUTERNAME%@Exemple.fr

if exist "C:%Exemple_path%BatCourantSecours.bat" goto C00
if exist "D:%Exemple_path%BatCourantSecours.bat" goto D00

@set ERREUR=0

:C00
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Copie de fichiers en cours                            ]
@ECHO .       [ Veuillez patienter...                                 ]
@ECHO .       [-------------------------------------------------------]
@XCOPY \%Exemple_srv_path%Exemple*.* "C:%Exemple_path%Secours" /S /E /D /C /Y  2> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%Exemple_srv_path%photos*.* "C:%Exemple_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%Exemple_srv_path%documents*.* "C:%Exemple_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Operation terminee                                    ]
@ECHO .       [-------------------------------------------------------]
GOTO END
:D00
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Copie de fichiers en cours                            ]
@ECHO .       [ Veuillez patienter...                                 ]
@ECHO .       [-------------------------------------------------------]
@XCOPY \%Exemple_srv_path%Exemple*.* "D:%Exemple_path%Secours" /S /E /D /C /Y 2> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%Exemple_srv_path%photos*.* "D:%Exemple_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@XCOPY \%Exemple_srv_path%documents*.* "D:%Exemple_path%Secours" /S /E /D /C /Y 2>> %TMP%backup.log
IF %ERRORLEVEL% GEQ 1 set ERREUR=1
@ECHO .       [-------------------------------------------------------]
@ECHO .       [ Secours.bat                                           ]
@ECHO .       [                                                       ]
@ECHO .       [ Operation terminee                                    ]
@ECHO .       [-------------------------------------------------------]
GOTO END
IF %ERREUR% LSS 1 goto QUIT
set YYYYMMDD=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
sendmail /s %mail_server% /f %mail_from% /t %mail_to% /j "[%COMPUTERNAME] Erreur de sauvegarde %YYYYMMDD% " /m %TMP%backup.log

::Recupere IP du poste
for /f "tokens=1-2 delims=:" %%i in ('ipconfig ^| find "Address"') do set IP=%%j

:QUIT
:END
Dernière édition par pcsystemd le 24 Juil 2007, 11:12, édité 1 fois au total.
pcsystemd
 
Messages: 14
Inscrit le: 22 Juil 2007, 13:35

Suivant

Retour vers Windows XP

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 5 invités

  •  Liens commerciaux