OVH Cloud OVH Cloud

SNMP

1 réponse
Avatar
berthelagrandepatte
Bonsoir

J'ai à disposition un script qui fonctionne bien et qui me permet de
recueillir la description de l'imprimante, le nbre de page imprimée depuis sa
mise en service et le nbre de page imprimée depuis la mise sous tension.
Aujourd'hui, je dois rajouter le nombre de bac present sur les imprimantes.
Je possède bien les OID. Il y a un OID par BAc et quelque soit le type de
bac(500 feuilles, 2000 feuilles, MP TRAY ect...).

Le parc comprend des imprimantes avec deux bacs, 3 bacs et 4 Bacs. Mon
soucis est que lorsque je précise les 4 OID dans mon script, Seules les
imprimantes possédant les 4 Bacs apparaissent dans le fichier CSV. Si je veux
les imprimantes deux bacs, je n'ecris que deux OID dans le script. Dans ce
cas, j'ai la liste de toutes les imprimantes, y compris les Imp. 4 Bacs mais
dans le fichier n'apparait que la présence de deux bacs.

Coment puis je faire pour faire apparaitre tous les bacs des imprimantes,
quelque soit le nombre de bac ,dans mon fichiers csv?

Ci dessous le script. Les 4 lignes en sus avec OID sont les bacs. Meci de
vos réponses Lumineuses

-------------------------------------------------------------------------------------------------------------------
Set oFS = CreateObject ("Scripting.FileSystemObject")
Set oConnection = CreateObject("ADODB.Connection")
Set oCommand = CreateObject("ADODB.Command")
Set oSNMPManager = CreateObject("SScripting.SNMPManager")

Const ADS_SCOPE_SUBTREE = 5
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const RefInterval = 16
Const RootDir = "c:\compteur"

oConnection.Provider = "ADsDSOObject"
oConnection.Open "Active Directory Provider"
Set oCommand.ActiveConnection = oConnection
oCommand.CommandText = "Select printerName, ADsPath from " & "
'LDAP://DC=truc,DC=fr' where objectClass='printQueue' order by printerName"
oCommand.Properties("Page Size") = 1000
oCommand.Properties("Timeout") = 30
oCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
oCommand.Properties("Cache Results") = False
Set oRecordSet = oCommand.Execute
oRecordSet.MoveFirst

Set LogFile = oFS.OpenTextFile(RootDir & "log\" & Mid(Date,7,4) &
Mid(Date,4,2) & Mid(Date,1,2) & "_" & Mid(Time,1,2) & Mid(Time,4,2) &
Mid(Time,7,2) & ".csv", ForAppending, True)
LogFile.WriteLine("Nom de l'imprimante dans AD;DescriptionImprimante;Nom
d'hôte;Nbre total de pages imprimées;Nombre de pages imprimées depuis la mise
sous tension;Bac;Bac;Bac;Bac;Bac")
CompPrinterName = ""

Do Until oRecordSet.EOF
If Len(oRecordSet.Fields("printerName").Value) = 8 And
UCase((Mid(oRecordSet.Fields("printerName").Value,4,2)) = "IN") And (UCase
(CompPrinterName) <> UCase (oRecordSet.Fields("printerName").Value)) Then
Set oCurrentPrintQueue = GetObject(oRecordSet.Fields("ADsPath").Value)
oSNMPManager.Agent = (Mid(oCurrentPrintQueue.Get("portName"),4))
oSNMPManager.Community = "public"
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.1.1.0" ) 'Description de
l'imprimante
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.1.5.0" ) 'Nom de l'imprimante
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.10.2.1.4.1.1" ) 'Nombre
total de pages imprimées
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.10.2.1.5.1.1" ) 'Nombre
de pages imprimées depuis la mise sous tension
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.8.2.1.18.1.1") 'Bac
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.8.2.1.18.1.2")' Bac
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.8.2.1.18.1.3")' Bac
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.8.2.1.18.1.4")' Bac

Result = oSNMPManager.Get( ErrorIndex )
Set oVariablesCollection = oSNMPManager.Variables
LogFile.WriteLine(oRecordSet.Fields("printerName").Value & ";" &
oVariablesCollection.Item(1) & ";" & oVariablesCollection.Item(2) & ";" &
oVariablesCollection.Item(3) & ";" & oVariablesCollection.Item(4)&";" &
oVariablesCollection.Item(5)&";" & oVariablesCollection.Item(6)&";" &
oVariablesCollection.Item(7)&";" & oVariablesCollection.Item(8)&";" &
oVariablesCollection.Item(9))
oSNMPManager.Variables.RemoveAll
End If
Set oCurrentPrintQueue = Nothing
CompPrinterName = oRecordSet.Fields("printerName").Value
oRecordSet.MoveNext
Loop

LogFile.Close
oRecordSet.Close
oConnection.Close
Set LogFile = Nothing
Set oRecordSet = Nothing
Set oConnection = Nothing

-------------------------------------------------------------------------------------------------------------------

1 réponse

Avatar
Glenn Gagné
Salut,

Lorsque tu fais un CALL pour une valeur SNMP du BAC 3 ou 4 sur une
imprimante n'ayant que 2 bacs, l'instruction doit surement faire une fin
innatendue (retourner en erreur). Probablement en utilisant des validations
du réglera ton problème.

Ajoute une boucle IF pour chaque bac à l'intérieur de ton IF principal avec
une validation, Si c'est ok ou false pour la requête... (NOTE: Je ne sais
pas du tout comment réagit ces commandes, je n'ai jamais utilisé de SNMP en
script, mais j'y vais par logique !)

Glenn


"berthelagrandepatte" a
écrit dans le message de
news:
Bonsoir

J'ai à disposition un script qui fonctionne bien et qui me permet de
recueillir la description de l'imprimante, le nbre de page imprimée depuis
sa

mise en service et le nbre de page imprimée depuis la mise sous tension.
Aujourd'hui, je dois rajouter le nombre de bac present sur les
imprimantes.

Je possède bien les OID. Il y a un OID par BAc et quelque soit le type de
bac(500 feuilles, 2000 feuilles, MP TRAY ect...).

Le parc comprend des imprimantes avec deux bacs, 3 bacs et 4 Bacs. Mon
soucis est que lorsque je précise les 4 OID dans mon script, Seules les
imprimantes possédant les 4 Bacs apparaissent dans le fichier CSV. Si je
veux

les imprimantes deux bacs, je n'ecris que deux OID dans le script. Dans ce
cas, j'ai la liste de toutes les imprimantes, y compris les Imp. 4 Bacs
mais

dans le fichier n'apparait que la présence de deux bacs.

Coment puis je faire pour faire apparaitre tous les bacs des imprimantes,
quelque soit le nombre de bac ,dans mon fichiers csv?

Ci dessous le script. Les 4 lignes en sus avec OID sont les bacs. Meci de
vos réponses Lumineuses

--------------------------------------------------------------------------
-----------------------------------------

Set oFS = CreateObject ("Scripting.FileSystemObject")
Set oConnection = CreateObject("ADODB.Connection")
Set oCommand = CreateObject("ADODB.Command")
Set oSNMPManager = CreateObject("SScripting.SNMPManager")

Const ADS_SCOPE_SUBTREE = 5
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const RefInterval = 16
Const RootDir = "c:compteur"

oConnection.Provider = "ADsDSOObject"
oConnection.Open "Active Directory Provider"
Set oCommand.ActiveConnection = oConnection
oCommand.CommandText = "Select printerName, ADsPath from " & "
'LDAP://DC=truc,DC=fr' where objectClass='printQueue' order by
printerName"

oCommand.Properties("Page Size") = 1000
oCommand.Properties("Timeout") = 30
oCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
oCommand.Properties("Cache Results") = False
Set oRecordSet = oCommand.Execute
oRecordSet.MoveFirst

Set LogFile = oFS.OpenTextFile(RootDir & "log" & Mid(Date,7,4) &
Mid(Date,4,2) & Mid(Date,1,2) & "_" & Mid(Time,1,2) & Mid(Time,4,2) &
Mid(Time,7,2) & ".csv", ForAppending, True)
LogFile.WriteLine("Nom de l'imprimante dans AD;DescriptionImprimante;Nom
d'hôte;Nbre total de pages imprimées;Nombre de pages imprimées depuis la
mise

sous tension;Bac;Bac;Bac;Bac;Bac")
CompPrinterName = ""

Do Until oRecordSet.EOF
If Len(oRecordSet.Fields("printerName").Value) = 8 And
UCase((Mid(oRecordSet.Fields("printerName").Value,4,2)) = "IN") And (UCase
(CompPrinterName) <> UCase (oRecordSet.Fields("printerName").Value)) Then
Set oCurrentPrintQueue = GetObject(oRecordSet.Fields("ADsPath").Value)
oSNMPManager.Agent = (Mid(oCurrentPrintQueue.Get("portName"),4))
oSNMPManager.Community = "public"
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.1.1.0" ) 'Description de
l'imprimante
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.1.5.0" ) 'Nom de
l'imprimante

Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.10.2.1.4.1.1" ) 'Nombre
total de pages imprimées
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.10.2.1.5.1.1" ) 'Nombre

de pages imprimées depuis la mise sous tension
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.8.2.1.18.1.1") 'Bac
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.8.2.1.18.1.2")' Bac
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.8.2.1.18.1.3")' Bac
Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.8.2.1.18.1.4")' Bac

Result = oSNMPManager.Get( ErrorIndex )
Set oVariablesCollection = oSNMPManager.Variables
LogFile.WriteLine(oRecordSet.Fields("printerName").Value & ";" &
oVariablesCollection.Item(1) & ";" & oVariablesCollection.Item(2) & ";" &
oVariablesCollection.Item(3) & ";" & oVariablesCollection.Item(4)&";" &
oVariablesCollection.Item(5)&";" & oVariablesCollection.Item(6)&";" &
oVariablesCollection.Item(7)&";" & oVariablesCollection.Item(8)&";" &
oVariablesCollection.Item(9))
oSNMPManager.Variables.RemoveAll
End If
Set oCurrentPrintQueue = Nothing
CompPrinterName = oRecordSet.Fields("printerName").Value
oRecordSet.MoveNext
Loop

LogFile.Close
oRecordSet.Close
oConnection.Close
Set LogFile = Nothing
Set oRecordSet = Nothing
Set oConnection = Nothing

--------------------------------------------------------------------------
-----------------------------------------