| Oléane Web |
Mercredi 10 Mars 2010
|
|
||||
|
|
Scripting de base
' Affiche une fenetre d'information CRLF = Chr(13) & Chr(10) Tabulation = Chr(9) WshShell.Popup "Date : " & Tabulation & Tabulation & date & CRLF & _ "Heure : " & Tabulation & Tabulation & time & CRLF & _ 10, _ "Petit message comme d'exemple", _ vbOKonly Mapper des lecteurs réseau selon l'appartenance à un groupe (stations)
' Initialisation
' ----------------------------------------------
Set objRootLDAP = GetObject("LDAP://RootDSE" )
Set objNetwork = CreateObject("Wscript.Network" )
'Identification de la station
' ----------------------------------------------
Set objADSysInfo = CreateObject("ADSystemInfo" )
strUser = objADSysInfo.ComputerName
Set objUser = GetObject("LDAP://" & strUser)
strGroups = objUser.MemberOf
' Extraction du groupe
' ----------------------------------------------
if strGroups <> "" then
strGroups = split(strGroups,",")(0)
strGroups = Replace(strGroups,"CN=","")
end if
' Mappage des lecteurs en fonction des groupes
' ----------------------------------------------
Select Case strGroups
Case "G-SVT" objNetwork.MapNetworkDrive "X:", "\\Serveur\svt"
Case "G-MATHEMATIQUES" objNetwork.MapNetworkDrive "X:", "\\Serveur\maths"
Case "G-SCIENCE" objNetwork.MapNetworkDrive "X:", "\\Serveur\science"
End Select
Mapper des imprimmantes ' Pour poursuivre l'exécution du script même si une erreur intervient on error resume next ' Mappage de l'imprimante WSHNetwork.AddWindowsPrinterConnection "\\" & ServeurDC & "\Lexmark_T430" ' Gestion du code d'erreur on error goto 0 If err.number <> 0 Then MAPPING_IMP1 = "ERREUR" Else MAPPING_IMP1 = "OK" End If Fichiers et répertoires
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
' Le fichier à analyser
strFile = "C:\mon_fichier.zob"
Set colItems = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile & "'}" _
& " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")
For Each objItem in colItems
Wscript.Echo objItem.ReferencedDomainName
Wscript.Echo objItem.AccountName
Next
Supprimer tout les fichiers d'un répertoire datant de plus de 10 jours
' Parcours du répertoire
Set fold_dump = objFSO.GetFolder("d:\donnees\cuicui")
Set fold_sub_dump = fold_dump.files
For each fic_dump in fold_sub_dump
' Comparaison avec la date actuelle moins le nombre de jours désiré
If (fic_dump.datelastmodified) < (now-10) then
' Supression du fichier
objFSO.DeleteFile(fic_dump)
End IF
Next
Créer une arborescence (fonction) Sub CreerArborescence(Chemin) ' On vérifie si le chemin n'existe pas If Not objFSO.FolderExists(chemin) Then CreerRep(objFSO.GetParentFolderName(chemin)) ' Création du dossier objFSO.CreateFolder(chemin) End If End Sub Active Directory
' Choix du domaine et du conteneur d'Active Directory
' -------------------------------------------------------------------------
Set objDomain = GetObject("LDAP://dc=groupe,dc=adg")
Set objCN = GetObject("LDAP://CN=Users, dc=groupe, dc=adg")
' Création de l'utilisateur
' -------------------------------------------------------------------------
Set objUser = objCN.Create("User", "cn= " & nom & "")
objUser.Put "sAMAccountName", loggin
objUser.Put "sn", nom
objUser.Put "givenName", prenom
objUser.Put "physicalDeliveryOfficeName", bureau
objUser.Put "mail", messagerie
objUser.Put "l", ville
objUser.SetInfo
Set objUser = GetObject("LDAP://cn=" & nom & ",CN=Users,dc=groupe,dc=adg")
objUser.SetPassword "P@ssw0rd"
' Placement de l'utilisateur dans le groupe "Utilisa. du domaine"
' -------------------------------------------------------------------------
Set objCN = GetObject("LDAP://CN=Users, dc=groupe, dc=adg")
Set objGroup = GetObject("LDAP://CN=Utilisa. du domaine, CN=Users, dc=groupe, dc=adg")
objGroup.Put "sAMAccountName", "Utilisa. du domaine"
' Activation du compte
' -------------------------------------------------------------------------
Set objUser = GetObject("LDAP://cn=" & nom & ", CN=Users, DC=groupe, DC=adg")
objUser.AccountDisabled = FALSE
objUser.SetInfo
Ouverture et fermeture de session (scripts complets)
'================================================================================
' S C R I P T D' O U V E R T U R E D E S E S S I O N
'================================================================================
'
' - Mappage des lecteurs réseau
' - Installation des imprimantes réseau
' - Information sur la taille du lecteur personnel
'
' Auteur : CCE le 25/08/2008
'********************************************************************************
' Pour avoir le mode debug mettre la ligne suivante en commentaire
On Error Resume Next
' -------------------------------------------------------------------------------
' Paramétrage de base
' -------------------------------------------------------------------------------
Fichier_logon = "\\tice-dc\logs$\logs__logon.csv"
taille_critique = 2500
ServeurDC = "TICE-DC"
' -------------------------------------------------------------------------------
' Déclarations
' -------------------------------------------------------------------------------
Set WSHNetwork = WScript.CreateObject("WScript.Network")
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set Shell = createobject("shell.application")
Set objRDSE = GetObject("LDAP://rootDSE")
Set objfso = CreateObject("scripting.filesystemobject" )
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
CRLF = Chr(13) & Chr(10)
Tab = Chr(9)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
' -------------------------------------------------------------------------------
' Lecture des informations de l'utilisateur
' -------------------------------------------------------------------------------
Dim domaine, domaine_complet, user, objUser, description, station
user = WSHNetwork.username
station = UCASE (WSHNetwork.ComputerName)
domaine = WSHNetwork.UserDomain
domaine_complet = objRDSE.Get("defaultNamingContext")
Serveur = (split(WSHShell.ExpandEnvironmentStrings("%LogonServer%"),"\\"))(1)
'Recup du champ description
objConnection.Open "Provider=ADsDSOObject;"
objCommand.ActiveConnection = objConnection
objCommand.CommandText = "
Limiter l'ouverture de session sur une station (logon)
'*************************************************************************
' Script de logon afin de limiter une seule ouverture de session sur une
' seule machine
'
' 02/06/2008 - CCE
'*************************************************************************
' Déclaration des constantes
' -----------------------------------------------------------------------
Const Server_Name = "atos-fic" ' nom du serveur
Const Share_Name = "logon$" ' nom de partage
CRLF = Chr(13) & Chr(10)
Const ForReading = 1
Const ForAppending = 8
' Declarations
' -----------------------------------------------------------------------
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Dim StrUserName ' nom d'utilisateur actuel
Dim StrStrMachineName
Dim StrStrPathName
Dim StrStrMachineFile
Dim StrStrUserFile
' Processus de contrôle
' -----------------------------------------------------------------------
StrUserName = ""
' Attente malice afin que l'utilisateur soit vraiment connecté
While StrUserName = ""
WScript.Sleep 100
' On récupère le nom d'utilisateur
StrUserName = WSHNetwork.UserName
Wend
' On récupère le nom de la machine
StrMachineName = WshNetwork.ComputerName
StrPathName = "\\" & Server_Name & "\" & Share_Name & "\"
' On vérifie si un fichier portant le nom de l'utilisateur est présent
If ObjFSO.FileExists (StrPathName & StrUserName & ".txt") Then
' On ouvre le fichier afin de lire le contenu (nom de la station)
Set FicControle = ObjFSO.OpenTextFile(StrPathName & StrUserName & ".txt", 1)
StrMachineNameLogged = FicControle.ReadAll
' On affiche un message
message = "Votre compte a déjà une session ouverte sur la station " & StrMachineNameLogged & "et les connexions multiples sont interdites. Vous devez fermer votre session avant de vous connecter." & CRLF & CRLF & "Le système va maintenant fermer votre session."
WshShell.Popup message,20,"Sécurité e-lorraine",vbOKonly
' On ferme la session
WshShell.run "logoff.exe"
' Le fichier n'existe pas, l'utilisateur n'est pas connecté sur une autre machine
Else
' On crée le fichier avec le nom de la machine en contenu
Set StrUserFile = ObjFSO.CreateTextFile(StrPathName & StrUserName & ".txt")
StrUserFile.WriteLine StrMachineName
StrUserFile.Close
End If
Limiter l'ouverture de session sur une station (logoff)
'*************************************************************************
' Script de logoff afin de limiter une seule ouverture de session sur une
' seule machine
'
' 02/06/2008 - CCE
'*************************************************************************
' Déclaration des constantes
' -----------------------------------------------------------------------
Const Server_Name = "atos-fic" ' nom du serveur
Const Share_Name = "logon$" ' nom de partage
' Declarations
' -----------------------------------------------------------------------
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Dim StrUserName ' nom d'utilisateur actuel
Dim StrMachineFile
Dim StrPathName
' Processus de contrôle
' -----------------------------------------------------------------------
StrUserName = WSHNetwork.UserName ' On récupère le nom d'utilisateur
StrMachineName = WshNetwork.ComputerName ' On récupère le nom de la machine
StrPathName = "\\" & Server_Name & "\" & Share_Name & "\"
'Destruction des fichiers si on ferme la bonne session sur la bonne machine
If ObjFSO.FileExists (StrPathName & StrUserName & ".txt") Then
'Ouverture du fichier afin de déterminer le nom de la station
Set FicControle = ObjFSO.OpenTextFile(StrPathName & StrUserName & ".txt", 1)
' On supprime les caractères parasites
StrMachineNameLogged = Rtrim(FicControle.ReadAll)
' On ferme l'accès au fichier
FicControle.Close
' On compare les deux noms
If StrComp(StrMachineNameLogged,StrMachineName) Then
' On se trouve bien sur la bonne machine, on supprime le fichier
ObjFSO.DeleteFile (StrPathName & StrUserName & ".txt")
End If
End If
Sauvegardes (scripts complets)
'*************************************************************************
' Script de sauvegarde totale des données avec NTBACKUP. Ce script
' doit être exécuté sur le serveur de sauvegarde tout les dimanche
'
' 29/07/2008 - CCE
'*************************************************************************
' Pour mettre en mode debug, mettre en commentaire
On Error Resume Next
'------------------------------------------------------------------------
' Paramètres
'------------------------------------------------------------------------
destinataire = "xxx@domaine.com"
dossier_rapports = "C:\Documents and Settings\xxx\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data"
'------------------------------------------------------------------------
' Détermination de la semaine
'------------------------------------------------------------------------
dim arg(1), semaine
for i=0 to WScript.Arguments.Count-1
arg(i)=WScript.Arguments(i)
next
If WScript.Arguments.Count < 1 Then
msgbox("Vous devez indiquer le numéro de la semaine en argument (1, 2, 3 ou 4)")
Wscript.quit
Else
semaine = WScript.Arguments(0)
End If
' Semaine 1
If (semaine = "1") Then
commande_ntbackup = chr(34) & "@D:\BACKUP\SCRIPTS\BK-DONNEES.bks" & chr(34) & " /n " & chr(34) & "SEMAINE 1" & chr(34) & " /d " & chr(34) & "SEMAINE 1" & chr(34) & " /v:no /r:no /rs:no /hc:on /m normal /j " & chr(34) & "BK-DONNEES-SEM1-TOTALE" & chr(34) & " /l:s /g " & chr(34) & "194b0210-5c7f-4d5d-a31a-fd583273b795" & chr(34)
End If
' Semaine 2
If (semaine = "2") Then
commande_ntbackup = chr(34) & "@D:\BACKUP\SCRIPTS\BK-DONNEES.bks" & chr(34) & " /n " & chr(34) & "SEMAINE 2" & chr(34) & " /d " & chr(34) & "SEMAINE 2" & chr(34) & " /v:no /r:no /rs:no /hc:on /m normal /j " & chr(34) & "BK-DONNEES-SEM2-TOTALE" & chr(34) & " /l:s /g " & chr(34) & "c646de42-860b-4ab6-9248-c95df756c9dd" & chr(34)
End If
' Semaine 3
If (semaine = "3") Then
commande_ntbackup = chr(34) & "@D:\BACKUP\SCRIPTS\BK-DONNEES.bks" & chr(34) & " /n " & chr(34) & "SEMAINE 3" & chr(34) & " /d " & chr(34) & "SEMAINE 3" & chr(34) & " /v:no /r:no /rs:no /hc:on /m normal /j " & chr(34) & "BK-DONNEES-SEM3-TOTALE" & chr(34) & " /l:s /g " & chr(34) & "8e725511-036a-44d4-93ab-88a7179f229a" & chr(34)
End If
' Semaine 4
If (semaine = "4") Then
commande_ntbackup = chr(34) & "@D:\BACKUP\SCRIPTS\BK-DONNEES.bks" & chr(34) & " /n " & chr(34) & "SEMAINE 4" & chr(34) & " /d " & chr(34) & "SEMAINE 4" & chr(34) & " /v:no /r:no /rs:no /hc:on /m normal /j " & chr(34) & "BK-DONNEES-SEM4-TOTALE" & chr(34) & " /l:s /g " & chr(34) & "ba54660f-464e-4948-a8db-c0bd0f3f5248" & chr(34)
End If
'------------------------------------------------------------------------
' Déclaration des constantes
'------------------------------------------------------------------------
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set fso = CreateObject ( "Scripting.FileSystemObject" )
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
'------------------------------------------------------------------------
' Lancement de la sauvegarde NTBACKUP
'------------------------------------------------------------------------
message = "Rapport de sauvegarde sur bande des données e-lorraine." & VbCrLf & VbCrLf
message = message & "SEMAINE : " & semaine & VbCrLf & VbCrLf
message = message & "Début de la sauvegarde à : " & now & VbCrLf
datedebut = mid(date,7,4)& mid(date,4,2) & mid(date,1,2) & mid(time,1,2) & mid(time,4,2) & mid(time,7,2)
commande = "C:\WINDOWS\system32\ntbackup.exe backup " & commande_ntbackup
wshShell.Run commande,0,true
message = message & "Fin de la sauvegarde à : " & now & VbCrLf & VbCrLf
'------------------------------------------------------------------------
' Exploration du journal d'évènements
'------------------------------------------------------------------------
message = message & "Messages de l'observateur d'évènements : " & VbCrLf
' Attente de 3 secondes afin de laisser le temps à Windows d'écrire qq chose dans l'eventlog
WScript.Sleep 3000
Set colItems = objWMIService.ExecQuery("Select EventType,TimeGenerated,message from Win32_NTLogEvent Where Logfile='Application' AND SourceName = 'NTBackup' AND EventType = '1'")
if isobject(colItems) then
For Each objItem In colItems
if (objItem.TimeGenerated>datedebut) then
contenu=objitem.message
contenu=replace(contenu,chr(9),"",1,-1,1)
contenu=replace(contenu,chr(10),"",1,-1,1)
contenu=replace(contenu,chr(13),"",1,-1,1)
contenu=replace(contenu," "," ",1,-1,1)
message = message & mid(objItem.TimeGenerated,1,12) & " - " & contenu & VbCrLf
end if
Next
End If
message = message & VbCrLf & VbCrLf & VbCrLf
message = message & "Consultez le rapport en pièce jointe et archivez ce mail si aucun problème n'est à signaler. En cas d'erreur, contactez l'opérateur de sauvegarde."
message = message & VbCrLf & VbCrLf & VbCrLf
message = message & "_________________" & VbCrLf
message = message & "E-Lorraine Supervision"
'------------------------------------------------------------------------
' Envoi d'un mail
'------------------------------------------------------------------------
With CreateObject("CDO.Message")
If Err Then
MsgBox "CDO non installé"
Else
.From = "noreply@e-lorraine.net"
.To = destinataire
.Subject = "[SAUVEGARDES] Rapport de sauvegarde"
.TextBody = message
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.intranet.e-lorraine.net"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Configuration.Fields.Update
' Recherche du rapport NTBACKUP afin de l'attacher en pièce jointe
Set fold_rapports = fso.GetFolder(dossier_rapports)
Set fold_sub_rapports = fold_rapports.files
For each fic_rapport in fold_sub_rapports
' Tout les fichiers qui ont été modifié il y a 30 minutes
calcul_date = (now*24*60*60)-(fic_rapport.datelastmodified*24*60*60)
If (calcul_date < 1800) then
.AddAttachment(dossier_rapports & "\" & fic_rapport.name)
End IF
Next
' Envoi du mail
.Send
End If
End With
Sauvegarde de bases MySQL par DUMP
'*************************************************************************
' Script de sauvegarde des bases MySQL
'
' 16/07/2008 - CCE
'*************************************************************************
' Pour mettre en mode debug, mettre en commentaire
On Error Resume Next
'------------------------------------------------------------------------
'Déclaration des constantes
'------------------------------------------------------------------------
Const SQLUser = "root" ' utilisateur SQL
Const SQLPassword = "zob" ' mot de passe associé
' emplacement des binaires MySQL
Const PathSQL = "C:\Program Files\MySQL\MySQL Server 5.0\bin"
' emplacement des sauvegardes
Const PathBACKUP = "D:\BK-SQL"
'------------------------------------------------------------------------
' Execution du backup
'------------------------------------------------------------------------
dump_base("wath")
dump_base("bath")
'------------------------------------------------------------------------
' Fonctions de sauvegarde
'------------------------------------------------------------------------
Function dump_base(labase)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
' Calcul de la date
strDate = Year(date) & "-" & Right("0" & Month(date),2) & "-" & Right("0" & Day(date),2)
' Calcul du directory final
strChemin = PathBACKUP & "\" & labase
' Création du dossier si nécessaire
If not objfso.Folderexists(strChemin) then
objfso.CreateFolder(strChemin)
End If
' Exécution de la commande
WshShell.run Chr(34) & PathSQL & "\mysqldump.exe" & Chr(34) & " -u " & SQLUser & " -p" & SQLPassword & " --databases " & labase & " -r " & Chr(34) & strChemin & "\" & labase & "-" & strDate & ".sql" & Chr(34), 0, True
' Supression des vieux fichiers
Set fold_dump = objFSO.GetFolder(strChemin)
Set fold_sub_dump = fold_dump.files
For each fic_dump in fold_sub_dump
If (fic_dump.datelastmodified) < (now-10) then
objFSO.DeleteFile(fic_dump)
End IF
Next
End Function
|
|||||
| © 2010 COLLE Christophe |
Conformément à la loi informatique et libertés, ce site ne collecte aucune information nominative. Les données
susceptibles d´êtres stockées dans des cookies sont anonymes et à but uniquement statistique ou de navigation. Page générée en 0.05 seconde |