kompakt
Messages postés4Date d'inscriptionmardi 19 décembre 2006StatutMembreDernière intervention20 décembre 2006
-
19 déc. 2006 à 10:29
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
8 janv. 2007 à 12:48
Bonjour, excusé moi mais je n'ai pas le temps de chercher, j'ai mon serveur qui rentre en production ce soir et mon script n'est pas au point !! ou plutot plus au point !!
je ne suis peu etre pas dans la bonne section de VB ( je ne sais pas en quel vb le script est fait ) je ne sais meme pas commetn savoir quel vb jutilise lol !
mon probleme est :
J'ai recuperé plusieur script et j'en ai fait un unique avec !! qui fonctionne tres bien sur le serveur actuel ( windows 2000 server standard edition )
j'ai deplacé le script sur le nouveau server 2003 server. ( Tous les repertoires et system de fichiers sont a l'identique.) mais une partie du script ne fonctionne plus !!!
C'est un script de sauvegarde qui est executé par un BATCH tous les soir a 3 h du mat . ce script fait une sauvegarde incrementale, puis efface lavant derniere sauvegarde une fois la nouvelle effectuée. ensuite le script envoi un mail pour confirmer que la sauvegarde a bien eté faite.
tous ca marche tres bien ur 2000. et sur 2003 la sauvegarde s'effectue, mais le mail ne part pas ???
pourquoi ??? lol les classe d'objets aurait t'elle changée ? pour les mail ? juste un probleme au mail !!
Merci a vous
Y'a pas de ProbleMes , y'a Que des Solutions !!
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 20 déc. 2006 à 18:45
Bonjour,
Quitte à clore le sujet, autant cliquer sur accepter. Cela éviterat à
un certains nombre de personne de venir lire ton poste, qui n'est pas
particulièrement agréable. Un peu de politesse que diable...
Eventuellement, tu peux vérifier que le port 25 de ton serveur est ouvert.
Voici la combinaison des 2 codes plus haut. J'ai rajouté la sélection
du port, et un appel sur une méthode Update qui était dans la première
mais pas dans la seconde.
' function qui envoie un mail a [mailto:darlet@msem.univ-montp2.fr darlet@msem.univ-montp2.fr]
Function SendMail()
Set objMail = CreateObject("CDO.Message")
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 19 déc. 2006 à 10:48
Salut,
Excuses ce que je vais dire.
Mais en quoi le fait que ton serveur rentre en production ce soir, t'empêche de chercher????
En plus tu ne sais pas quel VB tu utilises???? (je dirais VBScript).... mais la encore rien n'est moins sûr...
Tu ne donnes aucun bout de code.... le code envoyant le Mail aurait été utile pour que l'on t'aide un minimum...
Bref... pas très pro tout ça....
Pour en revenir à ton problème peu être que les objets que tu utilises sous 2000 pour envoyer le mail n'existe plus sous 2003 ou bien on changé...
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 19 déc. 2006 à 11:04
Un problème de référence peut-etre, comme par exemple une version de Outlook (ou du logiciel pour envoyer les mails) différente donc référence différente ???????????????????
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
kompakt
Messages postés4Date d'inscriptionmardi 19 décembre 2006StatutMembreDernière intervention20 décembre 2006 20 déc. 2006 à 13:36
Bonjour, je n'ai pas à m'expliquer, mais je vais qd meme le faire ! il se trouve que je suis le seul admin qu'il reste dans ma boite ! tous en vacances ! j'ai un serveur qui est rentré en prod a 17 h hier je n'avais pas le choix. j'avais tout a installé dessus ! (FEFLOW, Public SHAre Folder, Xlab, Services de licenses, dns , dhcp + toute la list des users a crée + les bugs de routine ..... ) bref pas le tmp de chercher si je voulais etre dans les delais. ;o) et pour le manque de professionnalisme, qd on a pas le temps on peut paniquer ( je ne suis pas parfait et je ne me maitrise pas tjs ) Et puis je ne suis pas développeur !! je m'initie ! maintenant peu importe quel VB j'utilise, je voulais savoir " au cas tu n'aurais pas compris "si il existait des diffrences entre 2000 et 2003 server au niveau du VB intégré de base dans les deux OS !
merci d'avoir pris la peine de repondre a ma requete ;o)
Casy ! meme version de pack office et de NET FramworK. merci o)
'
' Declaration des Variables
'
Dim source
Dim dest
Dim nb
Dim moment
Dim save
Dim email_admin
Dim email_script
Dim host
Dim user
'
' Retourne TRUE si un dossier existe
'
Function ReportFolderStatus(fldr)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
ReportFolderStatus = fso.FolderExists(fldr)
End Function
'
' Copie d'un dossier
'
Function CopyFolder(src, dest)
'Function CopyFolder(src)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
CopyFolder = fso.CopyFolder(src, dest, false)
'fso.CopyFolder src, dest, false
End Function
'
' Execution de la commande
'
Function ExecCommand(command)
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run(command, 0, TRUE)
End Function
'
' Nombre de sous-dossier
'
Function NbSubFolder(folderspec)
Dim fso, f, f1, s, sf
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
Set sf = f.SubFolders
For Each f1 in sf
s = s + 1
Next
NbSubFolder = s
End Function
'
' Efface un dossier
'
Function DeleteAFolder(filespec)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
DeleteAFolder = fso.DeleteFolder(filespec)
End Function
'
' Cree un dossier
'
Function CreateFolder(folderspec)
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateFolder(folderspec)
CreateFolderDemo = f.Path
End function
'
' Envoyer un email
'
Function SendEmail(emailfrom, emailto, subject, message)
Set objmail = CreateObject("CDO.Message")
objEmail.From = emailfrom
objEmail.To = emailto
objEmail.Subject = subject
objEmail.Textbody = message
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtp_serveur
'Server port (typically 25)
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = smtp_port
objEmail.configuration.fields.Update
objEmail.Send
End Function
'
' Email valide?
'
Function IsValidEmail(str)
Dim re
Set re = New RegExp
re.pattern = "\w+\@[.\w]+" 'Modèle du style "[mailto:nnnnnn@dddddd nnnnnn@dddddd]"
IsValidEmail=re.Test(str)
End Function
'
' Message d'erreur
'
Function Erreur(message)
Dim subject
subject = "Erreur de sauvegarde sur : " & host
'SendEmail(email_script, email_admin, subject, message)
wscript.echo subject & vbcrlf & message
End Function
'
' Nom d'utilisateur
'
Function HostName()
Set WshNetwork = WScript.CreateObject("WScript.Network")
HostName = WshNetwork.ComputerName
End Function
'
' Nom de la machine
'
Function UserName()
Set WshNetwork = WScript.CreateObject("WScript.Network")
UserName = WshNetwork.UserName
End Function
'
' Retourne date contenue dans le nom du fichier
'
Function FileDate(FileName)
'FileDate = DateValue(left( FileName, InStrRev(FileName, " ", -1)))
FileName = replace(FileName, "-", ":")
FileName = replace(FileName, "_", "/")
FileDate = DateValue(replace(FileName, "-", ":"))
End Function
'
' Retourne l'heure contenue dans le nom du fichier
'
Function FileHour(FileName)
'FileHour = CDate(replace(right(FileName, len(FileName) - InstrRev(FileName, " ", -1))), "-", ":")
FileName = replace(FileName, "-", ":")
FileName = replace(FileName, "_", "/")
FileHour = TimeValue(FileName)
End Function
'
' Nombre d'argument de la ligne de commande
'
set Args = Wscript.Arguments
'wscript.echo args.count
if args.count < 4 then
wscript.echo "script <source> <destination> <nb_copie_max> "
wscript.quit(1)
End if
source = Args(0)
dest = Args(1)
nb = CInt(Args(2))
email_admin = args(3)
moment = Now
host = HostName()
user = UserName()
email_script = "<" & host & "> " & user & "@" & host
' Rajouter le test si \ ou / a la fin
' Verifie si le dossier source existe
if Not ReportFolderStatus(source) then
erreur "Le dossier source n'existe pas."
wscript.quit(1)
End if
' Verifie si le dossier destination existe
if Not ReportFolderStatus(dest) then
erreur "Le dossier destination n'existe pas."
wscript.quit(1)
End if
' Verifie si le nb de sauvegarde est superieur a 0
if nb < 1 then
erreur "Le nombre max de sauvegarde a stocker incorrect."
wscript.quit(1)
End if
' Verifie si le dossier destination existe
if "" = Trim(email_admin) then
erreur "L'email est invalide."
wscript.quit(1)
End if
' Path du dossier de sauvegarde
'save = dest & "" & FormatDateTime(moment, 1) & " "
save = dest & "" & Replace(replace(FormatDateTime(moment, 0),"/","_"),":","-")
'save = save & hour(moment) & "-" & minute(moment)
'save = save & "-" & second(moment) ' timer ' & "_" & FormatDateTime(moment, 3)
'save = save & Replace(time, ":", "-")
' Verifie si le dossier destination avec le rep sauvegarde existe
if ReportFolderStatus(save) then
erreur "Le dossier de sauvegarde existe deja."
wscript.quit(1)
End if
'wscript.echo source & vbcrlf & dest & vbcrlf & save
' Sauvegarde le dossier source
If CopyFolder(source, save) then
' si erreur n efface le dossier cree
DeleteAFolder(save)
end if
' Si le nb max atteint
if nb < NbSubFolder(dest) then
dim total
' on supprime les plus anciennes sauvegardes
Dim fso, f, f1, s, sf, i, ancien, name
total = NbSubFolder(dest) - nb
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(dest)
Set sf = f.SubFolders
For i = 1 to total
ancien = now
ancien_date = now
ancien_heure = time
name = ""
For Each f1 in sf
If ancien_date > FileDate(f1.name) then
if ancien_heure > FileHour(f1.name) then
name = f1.name
ancien_date = FileDate(f1.name)
ancien_heure = FileHour(f1.name)
end if
end if
Next
' Si le dossier existe on l'efface
If ReportFolderStatus(dest & "" & name) then
If DeleteAFolder(dest & "" & name) then
erreur "Impossible d'effacer la sauvegarde"
End if
End if
Next
End if
'
Voila du ocup je saurais en quoi mon Script a eté pondu !!
Merci à tous ;o) et bonne continuation !
Y'a pas de ProbleMes , y'a Que des Solutions !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 20 déc. 2006 à 13:50
Vu le code que tu produits et comme tu parle de VB intégré de base, il semblerait bien que ce soit du VBScript
Deux choses que je vois, je ne sais pas si c'est des erreurs de frappes en recopiant le script sur le forum....
Function SendEmail(emailfrom, emailto, subject, message)
Set objEmail = CreateObject("CDO.Message")
objEmail.From = emailfrom
objEmail.To = emailto
................
.............
message = message & vbcrlf & vbcrlf & string(30, "-") & vbcrlf & vbcrlf
'
SendEmail(email_script, email_admin, subject, message) <-- la ligne est en commentaire, donc la fonction en sera pas appelée
wscript.echo subject & vbcrlf & message
End Function
---- Sevyc64 (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
'
' Declaration des Variables
'
Dim source
Dim dest
Dim nb
Dim moment
Dim save
Dim email_admin
Dim email_script
Dim host
Dim user
Dim plus_vieux_dossier
'
' Retourne TRUE si un dossier existe
'
Function ReportFolderStatus(fldr)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
ReportFolderStatus = fso.FolderExists(fldr)
End Function
'
' Copie d'un dossier
'
Function CopyFolder(src, dest)
'Function CopyFolder(src)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
CopyFolder = fso.CopyFolder(src, dest, false)
'fso.CopyFolder src, dest, false
End Function
'
' Execution de la commande
'
Function ExecCommand(command)
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run(command, 0, TRUE)
End Function
'
' Nombre de sous-dossier
'
Function NbSubFolder(folderspec)
Dim fso, f, f1, s, sf
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
Set sf = f.SubFolders
For Each f1 in sf
s = s + 1
Next
NbSubFolder = s
End Function
'
' Efface un dossier
'
Function DeleteAFolder(filespec)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
DeleteAFolder = fso.DeleteFolder(filespec)
End Function
'
' Cree un dossier
'
Function CreateFolder(folderspec)
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateFolder(folderspec)
CreateFolderDemo = f.Path
End function
'
' Envoyer un email
'
Function SendEmail(emailfrom, emailto, subject, message)
Set objEmail = CreateObject("CDO.Message")
objEmail.From = emailfrom
objEmail.To = emailto
objEmail.Subject = subject
objEmail.Textbody = message
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtp_serveur
'Server port (typically 25)
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = smtp_port
objEmail.configuration.fields.Update
objEmail.Send
End Function
'
' Email valide?
'
Function IsValidEmail(str)
Dim re
Set re = New RegExp
re.pattern = "\w+\@[.\w]+" 'Modèle du style "[mailto:nnnnnn@dddddd nnnnnn@dddddd]"
IsValidEmail=re.Test(str)
End Function
'
' Message d'erreur
'
Function Erreur(message)
Dim subject
subject = "Erreur de sauvegarde sur : " & host
'SendEmail(email_script, email_admin, subject, message)
wscript.echo subject & vbcrlf & message
End Function
'
' Nom d'utilisateur
'
Function HostName()
Set WshNetwork = WScript.CreateObject("WScript.Network")
HostName = WshNetwork.ComputerName
End Function
'
' Nom de la machine
'
Function UserName()
Set WshNetwork = WScript.CreateObject("WScript.Network")
UserName = WshNetwork.UserName
End Function
'
' Retourne date contenue dans le nom du fichier
'
Function FileDate(FileName)
'FileDate = DateValue(left( FileName, InStrRev(FileName, " ", -1)))
FileName = replace(FileName, "-", ":")
FileName = replace(FileName, "_", "/")
FileDate = DateValue(replace(FileName, "-", ":"))
End Function
'
' Retourne l'heure contenue dans le nom du fichier
'
Function FileHour(FileName)
'FileHour = CDate(replace(right(FileName, len(FileName) - InstrRev(FileName, " ", -1))), "-", ":")
FileName = replace(FileName, "-", ":")
FileName = replace(FileName, "_", "/")
FileHour = TimeValue(replace(FileName, "-", ":"))
End Function
'
' met dans ma variable globale plus_vieux_dossier le plus vieux dossier dans un dossier
'
Function VieuxDossier(FileName)
Dim f1,plus_vieille_date,plus_vieille_heure
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(FileName)
Set sf = f.SubFolders
plus_vieille_date = date
plus_vieille_heure = time
For Each f1 in sf
if FileDate(f1.name) < plus_vieille_date then
set plus_vieux_dossier = f1
plus_vieille_date = FileDate(f1.name)
plus_vieille_heure = FileHour(f1.name)
End if
if FileDate(f1.name) = plus_vieille_date then
if FileHour(f1.name) < plus_vieille_heure then
set plus_vieux_dossier = f1
plus_vieille_date = FileDate(f1.name)
plus_vieille_heure = FileHour(f1.name)
End if
End if
NEXT
'wscript.echo plus_vieux_dossier.name
End Function
' function qui envoie un mail a [mailto:darlet@msem.univ-montp2.fr darlet@msem.univ-montp2.fr]
Function SendMail()
Set objMail = CreateObject("CDO.Message")
'
' Nombre d'argument de la ligne de commande
'
set Args = Wscript.Arguments
'wscript.echo args.count
if args.count < 4 then
wscript.echo "script <source> <destination> <nb_copie_max> "
wscript.quit(1)
End if
source = Args(0)
dest = Args(1)
nb = CInt(Args(2))
email_admin = args(3)
moment = Now
host = HostName()
user = UserName()
email_script = "<" & host & "> " & user & "@" & host
' Rajouter le test si \ ou / a la fin
' Verifie si le dossier source existe
if Not ReportFolderStatus(source) then
erreur "Le dossier source n'existe pas."
wscript.quit(1)
End if
' Verifie si le dossier destination existe
if Not ReportFolderStatus(dest) then
erreur "Le dossier destination n'existe pas."
wscript.quit(1)
End if
' Verifie si le nb de sauvegarde est superieur a 0
if nb < 1 then
erreur "Le nombre max de sauvegarde a stocker incorrect."
wscript.quit(1)
End if
' Verifie si l email existe
if "" = Trim(email_admin) then
erreur "L'email est invalide."
wscript.quit(1)
End if
' Path du dossier de sauvegarde
'save = dest & "" & FormatDateTime(moment, 1) & " "
save = dest & "" & Replace(replace(FormatDateTime(moment, 0),"/","_"),":","-")
'save = save & hour(moment) & "-" & minute(moment)
'save = save & "-" & second(moment) ' timer ' & "_" & FormatDateTime(moment, 3)
'save = save & Replace(time, ":", "-")
' Verifie si le dossier destination avec le rep sauvegarde existe
if ReportFolderStatus(save) then
erreur "Le dossier de sauvegarde existe deja."
wscript.quit(1)
End if
'wscript.echo source & vbcrlf & dest & vbcrlf & save
' Sauvegarde le dossier source
If CopyFolder(source, save) then
' si erreur n efface le dossier cree
DeleteAFolder(save)
end if
'wscript.echo " nombre de dossier max atteind"
Dim total
Dim fso, f, f1, s, sf, i, ancien, name
total = NbSubFolder(dest) - nb
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(dest)
Set sf = f.SubFolders
ancien = now
'wscript.echo " nombre de dossier ="&NbSubFolder(dest)
'wscript.echo "total= "&total
'wscript.echo " ancien= "&ancien
For i = 1 to 1
VieuxDossier(dest)
wscript.echo plus_vieux_dossier.name
If ReportFolderStatus(dest & "" & plus_vieux_dossier.name) then
If DeleteAFolder(dest & "" & plus_vieux_dossier.name) then
erreur "Impossible d'effacer la sauvegarde"
End if
End if
Next
end if
SendMail()
' Si le nb max atteint
'if nb < NbSubFolder(dest) then
' dim total
' on supprime les plus anciennes sauvegardes
' Dim fso, f, f1, s, sf, i, ancien, name
' total = NbSubFolder(dest) - nb
' Set fso = CreateObject("Scripting.FileSystemObject")
' Set f = fso.GetFolder(dest)
' Set sf = f.SubFolders
' For i = 1 to total
' ancien = now
' ancien_date = now
' ancien_heure = time
' name = ""
' For Each f1 in sf
' If ancien_date > FileDate(f1.name) then
' if ancien_heure > FileHour(f1.name) then
' name = f1.name
' ancien_date = FileDate(f1.name)
' ancien_heure = FileHour(f1.name)
' end if
' end if
' Next
' Si le dossier existe on l'efface
' If ReportFolderStatus(dest & "" & name) then
' If DeleteAFolder(dest & "" & name) then
' erreur "Impossible d'effacer la sauvegarde"
' End if
' End if
' Next
'End if
::::::::::::::::::::::::::::::::::::::::
Voila celui la marche sur 2000 et pas sur 2003
ERREUR : la valeur de configuration "SendUsing" est non valide.
CODE 80040220
Source CDO.Message.1
spir94
Messages postés1Date d'inscriptionjeudi 22 septembre 2005StatutMembreDernière intervention28 décembre 2006 28 déc. 2006 à 10:15
bonjour,
j'ai un script vbs d'envoi de mail automatique qui fonctionne très bien.
mon objmail.From utilise une adresse virtuelle et le problème réside dans le test de l'adresse email existante.
Je m'explique
1) adresse email existante alors envoi OK
2 adresse email inéxistante alors pas d'envoi (logique), mais comment dans ce cas être averti de l'echec de l'envoi a cause du destinataire inconnu?