Acces à un partage sans lecteur reseau
Bonjour,
Je tente de créer un script qui scanne tout le réseau et vérifie la présence d'un fichier sur chaque poste avant de lancer un psexec pour mettre à jour un programme maison.Pour cela, j'ai besoins d'accéder au disque dur de chaque machine.
- Est-il possible de me connecter sur le partage administratif c$ de chaque machine sans connecter de lecteur réseau?
- Une autre solution serait d'intégrer la verif de la présence du fichier dans le psexec, mais je ne sais pas comment faire pour logger les résultats. Plusieurs postes pourraient se connecter ensemble sur mon fichier de log. La question qui se pose alors, c'est comment gère-t'on les accès concurrents?
NB : Le script sera lancé à l'aide d'un compte administrateur déclaré sur chaque machine. Nous ne fonctionnons pas en domaine, donc pas de GPO possible.
Merci.
Olivier
Il est possible de se connecter sur le partage administratif!?
Merci Spandemonium,
peux-tu me préciser comment me connecter sur un partage administratif.
Le "if" mis en gras me renvoie l'erreur "Chemin d'accès introuvable".
voici ce que j'ai écrit, mais qui ne marche pas.
Code:
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 78 79 80 81 82 83 84
|
Option Explicit
'On Error Resume Next
Dim strAdrATester, Result, i, oFsoLog, oLog, strFileTrend, oFileTrend
' A convertir en fonction ou procedure
Dim oFsoTrendParam, oTrendParam, strLigneLue
Const PARAMRECHERCHE = "10.22.10.19"
Const STRPLAGEIP = "10.22.12." 'Plage d'ardesse à tester de 0 à 255
Const FICHIERLOG = "C:\install\log.csv"
Const FORREAD=1
Const FORWRIT=2
Const FORAPPEND=8
Const FICHIERTREND="\C$\Program Files\Trend Micro\OfficeScan Client\OFCSCAN.INI"
'==========================================================================
'Déclaration des objets
''Ouverture (création si absent) du fichier "FICHIERLOG"
Set oFsoLog = CreateObject("Scripting.FileSystemObject")
Set oLog = oFsoLog.OpenTextFile(FICHIERLOG, FORAPPEND, True)
Set oFileTrend=CreateObject("Scripting.FileSystemObject")
'==========================================================================
' Corps du programme
For i = 1 To 10 Step 1
strAdrATester = STRPLAGEIP & i
Result = TestAdrIp(StrAdrATester)
If Result = "present" Then
'Verif si trend installé
strFileTrend="\\" & strAdrATester & FICHIERTREND
'WScript.Echo strFileTrend
' Tester le IF
if oFileTrend.FileExists(strFileTrend) Then
Set oFsoTrendParam = CreateObject("Scripting.FileSystemObject")
Set oTrendParam = oFsoTrendParam.OpenTextFile(FICHIERTREND, FORREAD, True)
Do Until oTrendParam.atendofstream
strLigneLue = oTrendParam.readline()
If InStr(1, strLigneLue, PARAMRECHERCHE) > 0 Then
WScript.Echo strAdrATester & "Poste à jour"
'maj Log : Etat = Poste à jour; Date = now()
Else
WScript.Echo strAdrATester & "PSEXEC lancé"
'maj log : Etat = MAJ lancée; Date = now()
' PSEXEC
End If
Loop
oTrendParam.Close
Set oTrendParam = Nothing
Set oFsoTrendParam = Nothing
Else
WScript.Echo strAdrATester & "Anti-virus non-installé sur le poste"
'maj log : Etat = Anti-virus non-installé sur le poste
End If
Else
WScript.Echo "Poste éteint ou absent"
End If
'Ajout des valeurs "strAdrATester" et "Result" séparées par un ; dans "FICHIERLOG"
oLog.WriteLine( strAdrATester & ";" & Result)
Next
oLog.close
'==========================================================================
' Fonctions et procédures
' Fonction qui reçoit une adresse IP et renvoie present si le poste est présent sur le réseau
' ou absent s'il n'y a pas de réponse au ping
Function TestAdrIp(strIpCible)
On Error Resume Next
Const WaitOnReturn = TRUE 'on attend la fin de l'exécution
Const WindowStyle = 0 'on n'ouvre pas de fenêtre
Dim oShell, oExec, strPingResults
Set oShell = CreateObject("WScript.Shell")
Set oExec = oShell.Exec("ping -n 1 -w 1000 " & strIpCible)
strPingResults = LCase(oExec.StdOut.ReadAll)
If InStr(strPingResults, "ponse de " & strIpCible) Then
TestAdrIp = "present"
Else
TestAdrIp = "absent"
End If
End Function
wscript.quit 0 |
En fait, mon script sera lancé plusieurs fois durant une semaine.
Il scanne tous les postes du réseau et s'assure que l'anti-virus est à jour.
Si ce n'est pas le cas, il exécute un psexec qui lance la mise à jour.
A chaque exécution il doit generer/mettre à jour un log sur lequel il se base lors de l'exécution suivante pour ne pas interroger un poste qui est déjà à jour.
Le souci avec la methode de log via psexec, c'est qu'il va générer autant de fichiers que de postes soit près de 500. Et qu'a l'exécution suivante, il devra effectuer un traitement pour analyser/centraliser ces fichiers. Si on peut l'éviter....
Merci pour ton aide.
Olivier.
[RESOLU] Acces à un partage sans lecteur réseau
Il s'agissait d'une erreur de logique dans mon code
Après une relecture (ou deux...), ça fonctionne
Code:
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
' Variables et constantes
Option Explicit
'On Error Resume Next
Dim strAdrATester, Result, i, oFsoLog, oLog, strFileTrend, oFileTrend
' A convertir en fonction ou procedure
Dim oFsoTrendParam, oTrendParam, strLigneLue, strNonMaj
Const PARAMRECHERCHE = "10.22.10.19"
Const STRPLAGEIP = "10.22.12." 'Plage d'ardesse à tester de 0 à 255
Const FICHIERLOG = "C:\install\log.csv"
Const FORREAD=1
Const FORWRIT=2
Const FORAPPEND=8
Const FICHIERTREND="\C$\Program Files\Trend Micro\OfficeScan Client\OFCSCAN.INI"
'==========================================================================
'Déclaration des objets
''Ouverture (création si absent) du fichier "FICHIERLOG"
Set oFsoLog = CreateObject("Scripting.FileSystemObject")
Set oLog = oFsoLog.OpenTextFile(FICHIERLOG, FORAPPEND, True)
Set oFileTrend=CreateObject("Scripting.FileSystemObject")
'==========================================================================
' Corps du programme
For i = 6 To 8 Step 1
strAdrATester = STRPLAGEIP & i
Result = TestAdrIp(StrAdrATester)
If Result = "present" Then
'Verif si trend installé
strFileTrend="\\" & strAdrATester & FICHIERTREND
'WScript.Echo strFileTrend
' Tester le IF
strNonMaj = 0
if oFileTrend.FileExists(strFileTrend) Then
WScript.Echo "le fichier existe"
Set oFsoTrendParam = CreateObject("Scripting.FileSystemObject")
Set oTrendParam = oFsoTrendParam.OpenTextFile(strFileTrend, FORREAD, True)
Do Until oTrendParam.atendofstream
strLigneLue = oTrendParam.readline()
'WScript.Echo strLigneLue
If InStr(1, strLigneLue, PARAMRECHERCHE) > 0 Then
WScript.Echo strAdrATester & "Poste à jour"
'maj Log : Etat = Poste à jour; Date = now()
strNonMaj = 1
Exit Do
End If
Loop
If strNonMaj = 0 Then
WScript.Echo strAdrATester & "PSEXEC lancé"
'maj log : Etat = MAJ lancée; Date = now()
'PSEXEC
End If
oTrendParam.Close
Set oTrendParam = Nothing
Set oFsoTrendParam = Nothing
Else
WScript.Echo strAdrATester & "Anti-virus non-installé sur le poste"
'maj log : Etat = Anti-virus non-installé sur le poste
End If
Else
WScript.Echo "Poste éteint ou absent"
End If
'Ajout des valeurs "strAdrATester" et "Result" séparées par un ; dans "FICHIERLOG"
oLog.WriteLine( strAdrATester & ";" & Result)
Next
oLog.close
'==========================================================================
' Fonctions et procédures
' Fonction qui reçoit une adresse IP et renvoie present si le poste est présent sur le réseau
' ou absent s'il n'y a pas de réponse au ping
Function TestAdrIp(strIpCible)
On Error Resume Next
Const WaitOnReturn = TRUE 'on attend la fin de l'exécution
Const WindowStyle = 0 'on n'ouvre pas de fenêtre
Dim oShell, oExec, strPingResults
Set oShell = CreateObject("WScript.Shell")
Set oExec = oShell.Exec("ping -n 1 -w 1000 " & strIpCible)
strPingResults = LCase(oExec.StdOut.ReadAll)
If InStr(strPingResults, "ponse de " & strIpCible) Then
TestAdrIp = "present"
Else
TestAdrIp = "absent"
End If
End Function
wscript.quit 0 |
Merci à spandemonium qui m'a fourni un bout de code qui me servira prochainement.