Zählerstände von Druckern via SNMP auslesen

Printer KopieBei der Arbeit hat es mich immer wieder genervt, wenn es alle 3-6 Monate hieß “Hubi, mach’ mal die Liste mit den Druckerzählerständen!”. Die Aktion kostet bei den 8 Druckern einiges an Zeit, man darf durch alle Räume rennen, ggf. auf dem Boden krabbeln und wie rufe ich noch mal die Zählerstände an diesem Modell ab? Dann das ganze Zeug in einer Excel-Tabelle pressen und sich anschließend fragen, was man eigentlich vorher machen wollt… NERV!
Aus diesem Umstand heraus habe ich mir einen kleinen SNMP-Reader gebastelt, der mir in
einer Sekunde eine Tabelle mit allen Zählerständen und Seriennummern der Netzwerk-Drucker erstellt. Da ich damit nur Ricoh Drucker (monochrom) und einen Oki Drucker (5400 farbe) auslesen muss, beschränkt sich meine Liste mit OIDs auch nur auf diese beiden Druckertypen. Wer andere Drucker damit abrufen möchte, kann sich gerne das Skript anpassen bzw. mir die entsprechenden OIDs mitteilen, da das Skript die OIDs von meiner Seite abruft.
Nach dem Abruf erstellt das Skript eine HTML-Seite mit den aktuellen Zählerständen, auf der man auch noch manuell Korrekturen oder Nacherfassungen vornehmen kann. Anschließend kann man sich das als PDF ausdrucken oder über einen mailto-link über sein Email-Programm als Tab-Tabelle verschicken (Email-Adresse wird in den Voreinstellungen festgelegt).

Wer also auch mal etwas Zeit sparen möchte oder mal sehen möchte wie es funktioniert…:

SNMP Reader v06.12.2009 (2737 downloads)
Code zum markieren einmal anklicken Code im Skript-Editor öffnen

–© hubionmac.com 23.06.2008

— ließt seriennummern und Zählerstände von Druckern im LAN via SNMP aus.

— zur Zeit werden monochrome Ricoh-Drucker sowie Oki 5400 Farblaser unterstützt

— die besagten OIDs werden von hubionmac.com für das Skript zum Download bereit gestellt…

set emailtext to “Auslesedatumg IP Seriennummer Zählerstand Bezeichnung” & return

set thedate to do shell script “date \”+%Y-%m-%d\””

set ips to {}

set typs to {}

set infos to {}

tell application “Finder” to set mypath_p to (POSIX path of (container of (path to me) as alias)) & “prefs.txt”

tell application “Finder” to set mypath_h to (POSIX path of (container of (path to me) as alias)) & “Zaehlerstaende ” & thedate & “.html”

set csv_txt_online to do shell script “curl http://hubionmac.com/downloads/oids.txt”

try

set v_nr_oids_online to paragraph 1 of csv_txt_online as integer

on error

set v_nr_oids_online to 0

end try

set csv_txt to csv_txt_online

set prefs to do shell script “cat ” & quoted form of (mypath_p as text)

set about_string to paragraph 1 of prefs

set mailto to paragraph 2 of prefs

repeat with i from 4 to count of every paragraph of prefs

set AppleScript‘s text item delimiters to “;”

set theline to paragraph i of prefs

if (count of every text item of theline) = 3 then

set ips to ips & text item 1 of theline

set typs to typs & text item 2 of theline

set infos to infos & text item 3 of theline

end if

set AppleScript‘s text item delimiters to “”

end repeat

set data_list to {}

repeat with i from 1 to (count of ips)

set theip to item i of ips

if theip as text = “111.111.111.111” then

error “Bitte erst einmal die prefs.txt-Datei anpassen, ich habe keinen Schimmer, welche IPs die Drucker haben, die ich abfragen soll!”

exit repeat

end if

set thetype to item i of typs

set theinfo to item i of infos

set thecounter to 0

set oid_list to getOIDs(csv_txt, thetype)

if item 1 of item 1 of oid_list = “” then

set theserial to “–Typ unbekannt–“

set thecounter to “–Prefs überprüfen–“

set printer_data to {thedate, theip, theserial, thecounter, theinfo} as list

set data_list to data_list & {printer_data} as list

else

try

set theserial to last word of (do shell script “/usr/bin/snmpget -c public -v1 ” & theip & ” ” & item 1 of item 1 of oid_list)

repeat with oid_count_pointer from 1 to (count of every item of (item 2 of oid_list))

set bezeichnung to item oid_count_pointer of item 2 of oid_list

set current_OID to item oid_count_pointer of item 3 of oid_list

set thecounter to last word of (do shell script “/usr/bin/snmpget -c public -v1 ” & theip & ” ” & current_OID)

set printer_data to {thedate, theip, theserial, thecounter, (theinfo & “_” & bezeichnung as text)} as list

set data_list to data_list & {printer_data} as list

end repeat

on error

set printer_data to {thedate, theip, “FEHLER!”, “FEHLER!”, (theinfo)} as list

set data_list to data_list & {printer_data} as list

end try

end if

end repeat

set the clipboard to make_html_site(data_list, about_string, mailto)

do shell script “pbpaste|cat> ” & quoted form of mypath_h & “;open -a /Applications/Safari.app ” & quoted form of mypath_h

on make_html_site(data_list, about_string, mailto)

set html_start to “<HTML>

<HEAD>

<meta http-equiv=content-type content=\”text/html; charset=UTF-8\”>

<SCRIPT LANGUAGE=\”JavaScript\”>

function addRow(id){

if ((document.form1.col1.value)+(document.form1.col2.value)+(document.form1.col3.value)+(document.form1.col4.value)+(document.form1.col5.value)==”){

alert(unescape(\”N%F6h%2C n%F6h%2C nix eingetragen.\”));}

else {

    var tbody = document.getElementById

(id).getElementsByTagName(\”TBODY\”)[0];

    var row = document.createElement(\”TR\”)

    var td1 = document.createElement(\”TD\”)

    var td2 = document.createElement(\”TD\”)

    var td3 = document.createElement(\”TD\”)

    var td4 = document.createElement(\”TD\”)

    var td5 = document.createElement(\”TD\”)

    row.setAttribute(‘class’,’data’)

    row.setAttribute(‘onclick’,\”return get_data(this);\”)

    td1.appendChild(document.createTextNode(document.form1.col1.value))

    td2.appendChild(document.createTextNode(document.form1.col2.value))

    td3.appendChild(document.createTextNode(document.form1.col3.value))

    td4.appendChild(document.createTextNode(document.form1.col4.value))

    td5.appendChild(document.createTextNode(document.form1.col5.value))

    row.appendChild(td1);

    row.appendChild(td2);

    row.appendChild(td3);

    row.appendChild(td4);

    row.appendChild(td5);

    tbody.appendChild(row);

    document.form1.col1.value=\”\”

    document.form1.col2.value=\”\”

    document.form1.col3.value=\”\”

    document.form1.col4.value=\”\”

    document.form1.col5.value=\”\”

    updateMailTo();

    }

  }

  

  function get_data(el){

document.getElementById(‘col1’).value=el.cells[0].innerHTML;

document.getElementById(‘col2’).value=el.cells[1].innerHTML;

document.getElementById(‘col3’).value=el.cells[2].innerHTML;

document.getElementById(‘col4’).value=el.cells[3].innerHTML;

document.getElementById(‘col5’).value=el.cells[4].innerHTML;

deleteRow(el);

return false;

}

function deleteRow(r) {

var i=r.rowIndex;

document.getElementById(‘myTable’).deleteRow(i);

updateMailTo();

}

function updateMailTo() {

var mailtoSubject = document.getElementsByTagName(‘h1’)[0].innerHTML + ‘ – ‘ + document.getElementsByTagName(‘h1’)[1].innerHTML;

var mailtoTo = \”” & mailto & “\”;

var mailtoBody = \”\”;

for (var i=0;i<document.getElementById(‘myTable’).rows.length;i++)

{

for (var k=0;k<document.getElementById(‘myTable’).rows[i].cells.length;k++)

{

mailtoBody = mailtoBody + document.getElementById(‘myTable’).rows[i].cells[k].innerHTML + ‘%09’;

}

mailtoBody = mailtoBody + ‘%0A’;

}

document.getElementById(‘MailToLink’).href = ‘mailto:’ + mailtoTo + ‘?subject=’ + mailtoSubject + ‘&body=’ + mailtoBody;

}

</SCRIPT>

<STYLE>

body {

font: normal 12px/19px \”Lucida Grande\”, Arial, sans-serif;

color: black;

}

h1 {

text-align:center;

}

table.myTable {

empty-cells:show;

border-collapse:collapse;

border:solid 3px #82aa00;

color: black;

margin-left:auto; margin-right:auto;

}

table.inputs {

border-collapse:collapse;

border:hidden;

color: black;

margin-left:auto; margin-right:auto;

}

td {

text-align:center;

width:200px

}

tr.data:hover {

background-color:pink;

}

label, input, select { 

display: block;

width: 190px;

}

a img {

border:none;

opacity: 0.7;

}

a img:hover {

border:none;

opacity: 1;

}

@media print{

.inputs{display:none;}

}

</STYLE>

</HEAD>

<BODY onload=\”updateMailTo()\”>”

set part1 to “<h1>Druckerz&auml;hlerst&auml;nde vom ” & (do shell script “date \”+%Y-%m-%d\””) & “</h1>

<h1>” & make_html_conform(about_string) & “<h1>

<table id=\”myTable\” class=\”mytable\” cellspacing=\”0\” border=\”1\”>

  <tbody>

<tr>

<th>Auslesedatum</th>

<th>IP</th>

<th>Seriennummer</th>

<th>Z&auml;hlerstand</th>

<th>Bezeichnung</th>

</tr>”

set part2 to “”

repeat with datacell in data_list

set part2 to part2 & “ <tr id=\”row1\” class=\”data\” onclick=\”return get_data(this);\”>” & return

repeat with datavalue in datacell

set part2 to part2 & “<td>” & make_html_conform(datavalue) & “</td>” & return

end repeat

set part2 to part2 & “ </tr>

end repeat

set html_end to  </tbody>

</table>

<div>

<form name=\”form1\”>

<table class=\”inputs\”>

<tr>

<td><input type=\”text\” name=\”col1\” id=\”col1\”/></td>

<td><input type=\”text\” name=\”col2\” id=\”col2\”/></td>

<td><input type=\”text\” name=\”col3\” id=\”col3\”/></td>

<td><input type=\”text\” name=\”col4\” id=\”col4\”/></td>

<td><input type=\”text\” name=\”col5\” id=\”col5\”/></td>

</tr>

<tr>

<td colspan=5><a href=\”javascript:addRow(‘myTable’)\”><img src=\”data:image/png;base64,

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

\”></a></td>

</tr>

<tr>

<td colspan=5><a href=\”javascript:if (window.print) window.print();\”><img src=\”data:image/png;base64,

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

AAAAAElFTkSuQmCC

\”></a></td>

</tr>

<tr>

<td colspan=5><a id=\”MailToLink\” href=\”\”><img src=\”data:image/png;base64,

iVBORw0KGgoAAAANSUhEUgAAALcAAABACAIAAADXm3FpAAAAGXRFWHRTb2Z0d2Fy

ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACUtJREFUeNrsXd1vVEUUn1m3pa2khdQS

KrYhK9oofYECJvAiBAxECH0B1Af1qTzoe/kTIDyamNCQmBATI32poIKi8GAkSto0

mhIllGootgVBaKOFftDxtHfv3fk483F3t7vd7pwUevfuzL1nzvzmnDNnZk4pY4x4

8mSkhBeBJ48STx4lnjxKPHmUePIo8eRR4qmsKGn+enDkq9/+OjP26JupmXFtIUoI

467hEwt+pz9G37LgRlQ+vGBhwcxNpYxK0tMYVxX+BTwIT1YrEowBtLDSUkMVc0Wk

GM1UyIiO6F8UFVMfKwpc+17ufmWytnHV3lea3t3Q+Ka2h3VRtenZf7/t7/jz78+k

N/FMSy00MSd+q8pCeLICO8Kc+8OAYBWC4R1rl0csUEzujOOU6HqUFxcJxxIPZO5C

vUeITbYUG41EGLQCn4oQ1je888amU5XJla4omWMz534+dOefL4iVRSPGpUYi0qSi

4mHaIYsrABRDZpCF2s7QrzLcpZ7GGisxozacakY5UwQivJGKsjOTIjdGMCDqx3xz

ffv+rWefSVQ4+SW/DJ3OQITKw077EzabhcWIWIAodzJVuFqMCVWECyY+nAmF1epI

AUYYwzjRVReZJJrGEpU3seEyJ5qS8huZpo02zgn/Xv7tDOmR+Z5d6OXhBz2//nHa

SZeArfnkcsPM7BPUlvtlnyVCa+raVlSsnpgcGp8cyuU5kkKtTFa/v+ueZHeSmMd6

fh4iorVL/44PkbqaVG1NKlaVe+N9UzMPy63XQVCbU52tzR3Q9oHbXVdvHNOVBHC0

b7sEKAk+9t06YSjsipSwr6dnHw+OfPlq81sWlNy+/33Gelm9ZT1JjYlFeWh5qUHk

yI5ekFggt7YXO+FCJwFAEi9VKDw41g1DKw9AWaDh+99JKEH8krvjVxA/c8Ehp3He

KzUmFkHLs65bigTqNoAIL71YAzKn1zPB7b07/oPde/1vagjxq2k25iYXytHclhap

FvZJwW1upBkmp2/ZUTI3p8wbSUEhAvi40H+4rFwTsBdgZHkJXOw/XKB3U+73wvXM

06cOsVclxkDzpFFAFtD4slIS7gReyPXhLjA9MDxydTKy0CHctepXJE2qhylxIZar

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

0v8CDAAlZSrE22NXGwAAAABJRU5ErkJggg==

\”></a></td>

</tr>

</table>

</form>

</div>

</HTML>”

return html_start & part1 & part2 & html_end as text

end make_html_site

on make_html_conform(v)

set special_chars to {{“&”, “&amp;”}, {“<“, “&lt;”}, {“>”, “&gt;”}, {“ü”, “&uuml;”}, {“ä”, “&auml;”}, {“ö”, “&ouml;”}}

repeat with k in special_chars

set v to replace_chars(v, (item 1 of k), (item 2 of k))

end repeat

return v

end make_html_conform

on replace_chars(this_text, search_string, replacement_string)

if this_text contains the search_string then

set AppleScript‘s text item delimiters to the search_string

set the item_list to every text item of this_text

set AppleScript‘s text item delimiters to the replacement_string

set this_text to the item_list as string

set AppleScript‘s text item delimiters to “”

end if

return this_text

end replace_chars

on getOIDs(csv_txt, PrinterType)

set myoutput to {{“”}, {}, {}}

repeat with theline in every paragraph of csv_txt

if theline starts with (PrinterType & “_#” as text) then

set AppleScript‘s text item delimiters to “;”

set item 1 of item 1 of myoutput to text item 2 of theline

set AppleScript‘s text item delimiters to “”

else if theline starts with (PrinterType & “_” as text) and theline does not start with (PrinterType & “_#” as text) then

set AppleScript‘s text item delimiters to “;”

set temp1 to text item 1 of theline

set temp2 to text item 2 of theline

set AppleScript‘s text item delimiters to “_”

set temp3 to text item 2 of temp1

set AppleScript‘s text item delimiters to “”

set item 2 of myoutput to item 2 of myoutput & temp3

set item 3 of myoutput to item 3 of myoutput & temp2

end if

end repeat

return myoutput

end getOIDs

12 thoughts on “Zählerstände von Druckern via SNMP auslesen

  1. Larry says:

    Guten Tag

    Ich finde Ihr SNMP Drucker Script interessant. Wäre evtl. eine Anpassung möcglich mit der jeweiligen Firmware des Druckers? Markenwünsche wären HP & Lexmark… Was würde eine solche Anpassung Kosten?

    Danke für Ihr Feedback

    Freundliche Grüsse
    Larry

  2. hubionmac says:

    Hi Larry,

    das Skript macht eigentlich nichts anderes, als via SNMP-Kommando bestimmte OIDs auszulesen, was meinst Du denn mit jeweilige Firmware des Druckers?
    Gruß Hubi

  3. Mario says:

    Grüße,

    das script ist eine super Sache, leider habe ich versucht es irgendwie zu starten, weiß aber nicht wie. Hab zwar im Netz/google versucht zu schauen aber keine Antwort gefunden. Wie kann ich es starten? Laut den beschreibungen ist es selbstständig und benötigt lediglich den SNMP Dienst.

    Mfg

  4. Hubi says:

    Hallo Time, wie bereits gesagt macht das Script nichts anderes als Deine Netzwerkdrucker abzufragen. Zur Zeit läuft das Skript nur mit Rico schwarz/weiß Druckern und Oki 5400 Druckern zusammen, das ich nur die dafür passenden OIDs hinterlegt habe.
    Solltest Du einen dieser Drucker besitzen, musst Du nur noch die IP der Drucker und deren Typ in der Textdatei, die mit dem Skript zusammen im Ordner liegt, schreiben und das Skript ausführen.
    Bei der ganzen Sache handelt es sich auch mehr um einen möglichen Lösungansatz, als um eine fertige Anwendung…

  5. Mario says:

    Danke für den Tip aber ich wollte eher genauer wissen wie es ausgeführt wird. Ich bekomme es nicht gestartet.

    Mfg

  6. Hubi says:

    Was heißt denn nicht gestartet? Bekommst Du eine Fehlermeldung oder beendet sich das Programm kommentarlos?

  7. Mario says:

    ich bekomme nichts gestartet, es findet sich weder eine ausführbare datei, noch kann ich den code lesen. Habs mit mehreren Progis versucht darunter auch notepad++.

    mfg

  8. Hubi says:

    Herrgott, Du nutzt Windows!!! Hinfort mit Dir und komme erst wieder wenn Du einen Mac besitzt, der im Stande ist, solche Programm auszuführen! ;-P
    Unter Windows wirst Du diese AppleScript nicht zum Laufen bekommen, sorry.

  9. Mario says:

    mach nicht sowas^^. Ja ich bin ein Windows Kind aber nur weil ich die Fehler kenne.^^ Leider ist die landschaft so ausgebaut aber auch der Pinguin ist dabei. kannst du mir den Code mal so rüberschicken? Vielleicht kann ich das umwandeln und sonald es funzt gerne schicken, falls noch jemand hier so gebrannt ist^^

    Mfg

  10. hubi says:

    Na dann… der Quellcode ist nun ans Posting angehängt…

  11. Dominik says:

    Moin, gibt es schon Rückmeldungen wegen dem Windowsskript?
    Wäre daran sehr interessiert, habe auch Ricoh Systeme

    • Hubi says:

      Windows? Leider nein, hier findest Du nur AppleScripts, Windows-Batch-Dateien habe ich noch nie geschrieben. Vielleicht hilft Dir da aber snmpview weiter

Comments are closed.