D'accord, il s'agit d'une question spécifique à Windows. p>
Je dois pouvoir accéder aux niveaux d'encre d'une imprimante connectée à un ordinateur. Connexion directe éventuellement ou une connexion réseau. P>
Je reconnais que cela sera probablement différent pour chaque imprimante (ou une entreprise d'imprimante au moins), mais où puis-je trouver les informations de la manière dont ils révèlent des niveaux d'encre à un PC. En outre, quelle est la meilleure langue pour lire ces informations? p>
4 Réponses :
D'accord, il s'agit d'une réponse agnostique du système d'exploitation ...: -)
Si l'imprimante n'est pas un modèle très cheapo, il aura une prise en charge intégrée pour SNMP (protocole de gestion de réseau simple). Les requêtes SNMP peuvent renvoyer les valeurs actuelles des périphériques réseau stockés dans leurs MIBS (bases d'informations de gestion). P>
pour les imprimantes Il existe une norme définie appelée imprimante MIB . L'imprimante MIB définit des noms standard et des emplacements d'arbres (OIDS == identifiants d'objet em> dans ASN. 1 notation ) pour Sachez que SNMP permet également aux extensions privées em > aux MIB standard. La plupart des fournisseurs d'imprimante masquent de nombreuses informations supplémentaires dans leurs "MIBS privées", bien que les informations standard soient toujours disponibles dans les requêtes de l'imprimante MIB OIDS. P> pratiquement chaque langage de programmation a des bibliothèques standard qui peuvent vous aider à faire des requêtes spécifiques SNMP à partir de votre propre application. P> Un de ces implémentations est open source, appelé i pense em> l'OID pour interroger Tous les niveaux de toutes les encres sont où prtmarkersupliesliesLevel code> qui dans le cas d'imprimantes de marquage d'encre carte des niveaux d'encre. P>
net-snmp code>
, qui est également livré avec quelques outils de commande puissante de commande pour exécuter des requêtes SNMP. p> .1.3.6.1.2.1.43.11.1.1.9 code> ( cette page Web confirme mon croire) mais je ne peux pas vérifier cela maintenant, car je n'ai pas d'imprimante dans mon réseau local pour le moment. SE NET-SNMP's
SNMPGET '/ CODE> La commande d'encre de requête doit être quelque chose comme: p>
public code> est la norme < em> chaîne communautaire em> et
192.168.222.111 code> Adresse IP de votre imprimante. P> P>
Il est important de noter que PRTMARKERSUPLLIESLIVELLIVEL NECCESARLIY ne vous donnera pas la mesure de niveau d'encre. L'unité de mesure utilisée pour déterminer cette couche d'alimentation peut aller de la valeur de l'encre, à la manière dont les pages de papier sont estimées avant de s'épuiser. Vous devez vérifier la valeur de PRTmarkersuppliSupplyUnit à quelle valeur l'unité utilise. Il y a 19 types de mesure prédéfinis que j'ai vus jusqu'à présent, seulement 3 d'entre eux concernent un volume d'encre
J'ai un SNMP-Capable HP 8600 PRO N911A autour de faire des creusages. Les commandes suivantes peuvent donc vous aider un peu. Méfiez-vous que ce modèle particulier a des problèmes de microprogramme, vous ne pouvez pas interroger "magenta" avec snmpget, mais vous voyez une valeur avec SNMPWALK (qui fait une sorte de forage récursif).
Old: Vous pouvez interroger les noms et séquence de valeurs, mais je n'ai pas pu trouver la "valeur max" pour calculer un pourcentage propre jusqu'à présent; (. Je suppose que les valeurs sont relatifs à 255, la division de 2,55 donne un pourcentage. P >
Mise à jour: l'indice de Marcelo était super! Des registres. Pour lire les valeurs max et calculer C P>
Il existe également une discussion là-bas sur les forums Cacti .
Une réponse confirme que les niveaux d'encre sont mesurés en pourcentage (la valeur 15 est "pourcentage" dans une énumération): p> Vous devez installer le package Net-SNMP. Si vous n'êtes pas sur Linux, vous pourriez avoir besoin de certains des outils de ligne de commande SNMP pour votre système d'exploitation préféré. P> sur ma boîte Linux, j'utilise le script suivant pour faire un peu de joli -Imprétation: P> #!/bin/sh
PATH=/opt/bin${PATH:+:$PATH}
# get current ink levels
eval $(snmpwalk -v1 -c praxis 192.168.100.173 1.3.6.1.2.1.43.11.1.1.6.0 |
perl -ne 'print "c[$1]=$2\n" if(m!SNMPv2-SMI::mib-2.43.11.1.1.6.0.(\d) = STRING:\s+"(\w+) ink"!i);')
# get max ink level per cartridge
eval $(snmpwalk -v1 -c praxis 192.168.100.173 1.3.6.1.2.1.43.11.1.1.8.0 |
perl -ne 'print "max[$1]=$2\n" if(m!SNMPv2-SMI::mib-2.43.11.1.1.8.0.(\d) = INTEGER:\s+(\d+)!i);')
snmpwalk -v1 -c praxis 192.168.100.173 1.3.6.1.2.1.43.11.1.1.9.0 |
perl -ne '
my @c=("","'${c[1]}'","'${c[2]}'","'${c[3]}'","'${c[4]}'");
my @max=("","'${max[1]}'","'${max[2]}'","'${max[3]}'","'${max[4]}'");
printf"# $c[$1]=$2 (%.0f)\n",$2/$max[$1]*100
if(m!SNMPv2-SMI::mib-2.43.11.1.1.9.0.(\d) = INTEGER:\s+(\d+)!i);'
J'ai vraiment aimé l'approche de Tseeling!
Complétairement, j'ai découvert que la valeur max pour l'OID J'ai écrit mon propre script qui sortit des CSV comme ci-dessous (Supposons que l'imprimante IP Addr est 192.168.1.20): p> ... .9 code> n'est pas de 255 comme deviné par lui, mais cela varie en fait par personne cartouche. Les valeurs peuvent être obtenues à partir d'OID
.1.3.6.1.2.1.43.11.1.1.8 code> (les résultats obtenus en divisant par ces valeurs correspondent aux celles obtenues en exécutant la commande HP-INKLEVels de HPLIP. P>
#!/bin/sh
snmpwalk -v1 -c public $1 1.3.6.1.2.1.43.11.1.1 | awk '
/.*\.6\.0\./ {
sub(/.*\./,"");
split($0,TT,/[ "]*/);
color[TT[1]]=TT[4];
}
/.*\.8\.0\./ {
sub(/.*\./,"");
split($0,TT,/[ "]*/);
maxlevel[TT[1]]=TT[4];
}
/.*\.9\.0\./ {
sub(/.*\./,"");
split($0,TT,/[ "]*/);
print color[TT[1]] "," TT[4] "," maxlevel[TT[1]] "," TT[4] / maxlevel[TT[1]] * 100;
}'
Une approche alternative pourrait utiliser IPP. Alors que la plupart des imprimantes que j'ai essayé de soutenir les deux, j'ai trouvé un qui a seulement travaillé avec IPP et celui qui n'a fonctionné que pour moi avec SNMP.
Approche simple avec Remarque: Ce qui précède est avec des tasses 2.3.1. Avec 2.2.1, j'ai dû spécifier les mots-clés comme une chaîne à la place ( Plus sur les attributs disponibles (peut différer entre les imprimantes): https: / /www.cups.org/doc/spec-ipp.html IPPTOOL code>: P>
couleurs.ipp code>: li>
ul>
Niveaux de marqueur code> a des niveaux de toner / encre actuels,
des niveaux de marqueur-hauts code> sont maximus (jusqu'à présent i "vu seulement cings ici),
noms marqueurs code> décrit la signification de chaque champ (Conseil: Pour les couleurs, vous voudrez peut-être tout dépasser de la première place, de nombreuses imprimantes incluent des types de cartouches dans ce champ). P>
"des couleurs de marqueur, du marqueur-h .... code>). Ou il peut être laissé complètement, tous les mots-clés sont retournés. < / p>
Plus d'informations sur l'exécution d'appels IPP (y compris des exemples Python): https://www.pwg.org/ipp /ippguide.html p> p>
Pour l'imprimante réseau, le moyen le plus simple est probablement de saisir des informations à partir de son interface Web.
Où puis-je trouver une telle documentation?
Je ne sais pas si une telle documentation existe, mais vous pouvez analyser le HTML renvoyé par interface Web pour trouver vos données, ce n'est généralement pas un gros problème.