From
[email protected] Fri Feb 4 06:16:58 2000
Received: from astart2.astart.com (fw.private [10.0.0.1])
by h4.private (8.9.3/8.9.3) with ESMTP id GAA10229
for <
[email protected]>; Fri, 4 Feb 2000 06:16:57 -0800 (PST)
Received: from postoffice.mail.cornell.edu (POSTOFFICE.MAIL.CORNELL.EDU [132.236.56.7])
by astart2.astart.com (8.9.3/8.9.3) with ESMTP id GAA08761
for <
[email protected]>; Fri, 4 Feb 2000 06:20:39 -0800 (PST)
Received: from gibbie (GIBBIE.CIT.CORNELL.EDU [128.253.64.74])
by postoffice.mail.cornell.edu (8.9.3/8.9.3) with ESMTP id JAA02549;
Fri, 4 Feb 2000 09:20:35 -0500 (EST)
Message-Id: <
[email protected]>
X-Sender:
[email protected] (Unverified)
X-Mailer: QUALCOMM Windows Eudora Pro Version 4.2.0.58
Date: Fri, 04 Feb 2000 09:17:06 -0500
To:
[email protected]
From: Rick Cochran <
[email protected]>
Subject: Perl code for RFC1759 printer MIB
Cc: "Damian, G. C. (Gerald)" <
[email protected]>
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="=====================_172463765==_"
--=====================_172463765==_
Content-Type: text/plain; charset="us-ascii"; format=flowed
Patrick,
There are two pieces - the routines to query and interpret the RFC1759
variables (npstatlib.pm), and the routines to do MIB lookups and SNMP
"gets" (SNMP_mib.pm). I tried copying them into this message, but Eudora
helpfully removed all the indentation, so I'm sending them to you as
"attachments". If that doesn't work for you, let me know and I'll try again.
-Rick
--=====================_172463765==_
Content-Type: application/octet-stream; name="npstatlib.pm";
x-mac-type="504D706D"; x-mac-creator="474B4F4E"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="npstatlib.pm"
IyEvdXNyL2NvbW1vbi9iaW4vcGVybCAtdwojIFRoaXMgc2NyaXB0IGNvbnRhaW5zIHN1YnJvdXRp
bmVzIHRvIGNoZWNrIHByaW50ZXIgc3RhdHVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIDEwLzExLzk5IHJjYyAtIEFkZCAicHJp
bnRlcl9pZGxlIjsgUmVtb3ZlICJzZXJ2aWNlIHJlcXVlc3QiIGFzIGEgImRvd24iCiMgMDkvMjQv
OTkgcmNjIC0gQWRkICJnZXRfcGFnZWNvdW50IgojIDA4LzAxLzk5IHJjYyAtIENvbnZlcnQgTlBT
dGF0LnBsIHRvIFBlcmwgNSBtb2R1bGUgbnBzdGF0bGliLnBtCiMgMDQvMDkvOTkgcmNjIC0gUmVk
dWNlIFNOTVAgcmV0cmllcyBmcm9tIDUgdG8gMgojIDEwLzAxLzk4IHJjYwojIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2Ug
bnBzdGF0bGliOwoKIyAidXNlIGRpYWdub3N0aWNzIiBzaG91bGQgYmUgY29tbWVudGVkIG91dCBm
b3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudAojdXNlIGRpYWdub3N0aWNzOwp1c2Ugc3RyaWN0OwoK
dXNlIHZhcnMgcXd7IEBJU0EgQEVYUE9SVCB9OwpyZXF1aXJlIEV4cG9ydGVyOwpASVNBID0gcXd7
IEV4cG9ydGVyIH07CkBFWFBPUlQgPSBxd3sKICAgIGdldF9zdGF0dXMKICAgIGVycjJzdHIKICAg
IHByaW50ZXJfb2sKICAgIGdldF9wcmludGVybGlzdAogICAgZ2V0X3ByaW50ZXJpbmZvCiAgICBn
ZXRfYWxscHJpbnRlcmluZm8KICAgIGdldF9wYWdlY291bnQKfTsKCiMgZXhwb3J0ZWQKdXNlIHZh
cnMgcXd7Cn07CgojIG5vbi1leHBvcnRlZCBidXQgZ2xvYmFsIHRvIHRoZSBwYWNrYWdlOgp1c2Ug
dmFycyBxd3sKICAgICRQU1RBVF9TRVJWSUNFX1JFUQogICAgJFBTVEFUX09GRkxJTkUKICAgICRQ
U1RBVF9QQVBFUl9KQU0KICAgICRQU1RBVF9ET09SX09QRU4KICAgICRQU1RBVF9UT05FUl9PVVQK
ICAgICRQU1RBVF9UT05FUl9MT1cKICAgICRQU1RBVF9QQVBFUl9PVVQKICAgICRQU1RBVF9QQVBF
Ul9MT1cKICAgICRQU1RBVF9JRExFCiAgICAkUFNUQVRfUFJJTlRJTkcKICAgICRQU1RBVF9XQVJN
SU5HX1VQCiAgICAkUFNUQVRfVU5SRUFDSEFCTEUKICAgICRQU1RBVF9NQVgKICAgICVzdGF0bXNn
CiAgICAlcHJ0c3RhdG1zZwp9OwoKIyBMb2FkcyBtb2R1bGVzIGZyb20gc291cmNlIGRpcmVjdG9y
eSBpZiBleGVjdXRlZCBpbiBzb3VyY2UgZGlyZWN0b3J5CnVzZSBsaWIgcXcoLiAvdXNyL2xvY2Fs
L25ldHByaW50L2xpYik7CnVzZSBucHBhcmFtczsKdXNlIFNOTVBfbWliOwp1c2UgU05NUF9TZXNz
aW9uOwp1c2UgQkVSOwoKIyBOb3RlOiAgVGhlIGJpdCBkZWZpbml0aW9ucyBmb3IgdGhlIGZpcnN0
IDggb2YgdGhlIGl0ZW1zIGJlbG93IGFyZSB0YWtlbgojIGZyb20gdGhlIGRlc2NyaXB0aW9uIG9m
IHRoZSB2YWx1ZXMgZm9yIGhyUHJpbnRlckRldGVjdGVkRXJyb3JTdGF0ZSBpbgojIFJGQzE3NTku
CkJFR0lOIHsKICAgICRQU1RBVF9TRVJWSUNFX1JFUSA9IDE7CiAgICAkUFNUQVRfT0ZGTElORSA9
IDI7CiAgICAkUFNUQVRfUEFQRVJfSkFNID0gNDsKICAgICRQU1RBVF9ET09SX09QRU4gPSA4Owog
ICAgJFBTVEFUX1RPTkVSX09VVCA9IDE2OwogICAgJFBTVEFUX1RPTkVSX0xPVyA9IDMyOwogICAg
JFBTVEFUX1BBUEVSX09VVCA9IDY0OwogICAgJFBTVEFUX1BBUEVSX0xPVyA9IDEyODsKICAgICRQ
U1RBVF9JRExFID0gMjU2OwogICAgJFBTVEFUX1BSSU5USU5HID0gNTEyOwogICAgJFBTVEFUX1dB
Uk1JTkdfVVAgPSAxMDI0OwogICAgJFBTVEFUX1VOUkVBQ0hBQkxFID0gMjA0ODsKICAgICRQU1RB
VF9NQVggPSAyMDQ4OwoKICAgICVzdGF0bXNnID0KCSgKCSAkUFNUQVRfU0VSVklDRV9SRVEsICdT
ZXJ2aWNlIFJlcXVlc3RlZCcsCgkgJFBTVEFUX09GRkxJTkUsICdPZmZsaW5lJywKCSAkUFNUQVRf
UEFQRVJfSkFNLCAnUGFwZXIgSmFtJywKCSAkUFNUQVRfRE9PUl9PUEVOLCAnRG9vciBPcGVuJywK
CSAkUFNUQVRfVE9ORVJfT1VULCAnVG9uZXIgT3V0JywKCSAkUFNUQVRfVE9ORVJfTE9XLCAnVG9u
ZXIgTG93JywKCSAkUFNUQVRfUEFQRVJfT1VULCAnUGFwZXIgT3V0JywKCSAkUFNUQVRfUEFQRVJf
TE9XLCAnUGFwZXIgTG93JywKCSAkUFNUQVRfSURMRSwgJ0lkbGUnLAoJICRQU1RBVF9QUklOVElO
RywgJ1ByaW50aW5nJywKCSAkUFNUQVRfV0FSTUlOR19VUCwgJ1dhcm1pbmcgVXAnLAoJICRQU1RB
VF9VTlJFQUNIQUJMRSwgJ0RJU0NPTk5FQ1RFRCwgT0ZGTElORSwgT1IgTk9UIFJFU1BPTkRJTkcn
LAoJICk7CgogICAgJXBydHN0YXRtc2cgPQoJKAoJIDMsICRQU1RBVF9JRExFLAoJIDQsICRQU1RB
VF9QUklOVElORywKCSA1LCAkUFNUQVRfV0FSTUlOR19VUCwKCSApOwp9CgoKIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIGdldF9zdGF0
dXMoJHByaW50ZXIpCiMKIyBVc2VzIFNOTVAgdG8gZmluZCB0aGUgc3RhdHVzIGFuZCByZXR1cm5z
IGFuIGVycm9yY29kZQojIHdoaWNoIGNhbiBiZSBkZWNpcGhlcmVkIGluIGVycjJzdHIsIHdoaWNo
IHdpbGwgcmV0dXJuIGFuIGFycmF5IG9mCiMgc3RyaW5ncyBzcGVjaWZ5aW5nIHRoZSBlcnJvcihz
KSBvY2N1cmluZy4KCnN1YiBnZXRfc3RhdHVzIHsKICAgIG15KCRwcmludGVyKSA9IEBfOwogICAg
bXkoJXBpbmZvKTsKICAgIG15KCRpcCwgJGNvbW11bml0eSwgJHNlc3Npb24sICR0eXBlLCAkZGV2
c3RhdCwgJHBydHN0YXQsICRlcnJvcik7CgogICAgaWYgKCAhIGRlZmluZWQoJXBpbmZvID0gZ2V0
X3ByaW50ZXJpbmZvKCRwcmludGVyKSkgKSB7CglyZXR1cm4odW5kZWYpOwogICAgfQogICAgaWYg
KCAkcGluZm97VklSVFVBTH0gPX4gL15beVldLyApIHsKCXJldHVybigkUFNUQVRfSURMRSk7CiAg
ICB9CiAgICAkaXAgPSAkcGluZm97SVB9OwogICAgJGNvbW11bml0eSA9ICdwdWJsaWMnOwoKICAg
ICMgVGhlIGZvbGxvd2luZyBsaW5lIGNhbiBiZSBjb21tZW50ZWQgb3V0IGZvciBkZWJ1Z2dpbmcg
cHVycG9zZXMuCiAgICAkU05NUF9TZXNzaW9uOjpzdXBwcmVzc193YXJuaW5ncyA9IDE7CiAgICBz
bm1wX2luaXRtaWIoKTsKICAgIGlmICggISAoJHNlc3Npb24gPSBTTk1QX1Nlc3Npb24tPm9wZW4g
KCRpcCwgJGNvbW11bml0eSwgMTYxKSkgKSB7CiAgICAgICAgd2FybiAiQ291bGRuJ3Qgb3BlbiBT
Tk1QIHNlc3Npb24gdG8gJHByaW50ZXIgKGF0ICRpcCk6ICRTTk1QX1Nlc3Npb246OmVycm1zZyI7
CiAgICAgICAgcmV0dXJuKCRQU1RBVF9VTlJFQUNIQUJMRSk7CiAgICB9CiAgICAkc2Vzc2lvbi0+
c2V0X3JldHJpZXMoMik7CiAgICAoJHR5cGUsICRkZXZzdGF0LCAkcHJ0c3RhdCwgJGVycm9yKSA9
IHNubXBfZ2V0KCRzZXNzaW9uLCBxdyhzeXNEZXNjci4wIGhyRGV2aWNlU3RhdHVzLjEgaHJQcmlu
dGVyU3RhdHVzLjEgaHJQcmludGVyRGV0ZWN0ZWRFcnJvclN0YXRlLjEpKTsKICAgIGlmICggISBk
ZWZpbmVkKCR0eXBlKSApIHsKCXJldHVybigkUFNUQVRfVU5SRUFDSEFCTEUpOwogICAgfQoKICAg
IG15KCR0bXApID0gdW5wYWNrKCJDIiwgJGVycm9yKTsKICAgIGlmICggZGVmaW5lZCgkcHJ0c3Rh
dG1zZ3skcHJ0c3RhdH0pICkgewoJJHRtcCB8PSAkcHJ0c3RhdG1zZ3skcHJ0c3RhdH07CiAgICB9
CiAgICByZXR1cm4oJHRtcCk7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGVycjJzdHIgKCRjb2RlKQojCiMgR2l2ZW4gYW4gZXJy
b3Jjb2RlLCB0aGlzIHN1YiB3aWxsIGNvbnZlcnQgdGhlCiMgY29kZSB0byBhbiBhcnJheSBvZiBz
dHJpbmdzLCBlYWNoIGVuZGluZyBpbiBhIG5ld2xpbmUuCgpzdWIgZXJyMnN0ciB7CiAgICBteSgk
Y29kZSkgPSBAXzsKICAgIG15KEBtc2dzKTsKICAgIG15KCRpKTsKCiAgICBAbXNncyA9ICgpOwog
ICAgZm9yICggJGkgPSAxOyAkaSA8PSAkUFNUQVRfTUFYOyAkaSA8PD0gMSApIHsKCWlmICggJGkg
JiAkY29kZSApIHsKCSAgICBwdXNoKEBtc2dzLCAkc3RhdG1zZ3skaX0pOwoJfQogICAgfQogICAg
cmV0dXJuKEBtc2dzKTsKfQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwojIHByaW50ZXJfb2soJGNvZGUpCiMKIyBHaXZlbiBhIHByaW50
ZXIgc3RhdHVzIGNvZGUsIHJldHVybiBUUlVFIGZvciBwcmludGVyIE9LLCBhbmQgRkFMU0UKIyBm
b3IgcHJpbnRlciBub3QgZnVuY3Rpb25pbmcuCgpzdWIgcHJpbnRlcl9vayB7CiAgICBteSgkY29k
ZSkgPSBAXzsKICAgIHJldHVybiggISAoJGNvZGUgJiAoJFBTVEFUX09GRkxJTkUgfCAkUFNUQVRf
UEFQRVJfSkFNIHwgJFBTVEFUX0RPT1JfT1BFTiB8ICRQU1RBVF9UT05FUl9MT1cgfCAkUFNUQVRf
VE9ORVJfT1VUIHwgJFBTVEFUX1BBUEVSX09VVCB8ICRQU1RBVF9VTlJFQUNIQUJMRSkpICk7Cn0K
CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKIyBwcmludGVyX2lkbGUoJGNvZGUpCiMKIyBHaXZlbiBhIHByaW50ZXIgc3RhdHVzIGNvZGUs
IHJldHVybiBUUlVFIGZvciBwcmludGVyIGlkbGUsIGFuZCBGQUxTRQojIGZvciBhbnkgb3RoZXIg
cHJpbnRlciBzdGF0dXMuCgpzdWIgcHJpbnRlcl9pZGxlIHsKICAgIG15KCRjb2RlKSA9IEBfOwog
ICAgcmV0dXJuKCAkY29kZSA9PSAkUFNUQVRfSURMRSApOwp9CgoKIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgZ2V0X3ByaW50ZXJsaXN0
CiMgZ2V0X3ByaW50ZXJpbmZvCiMgZ2V0X2FsbHByaW50ZXJpbmZvCiMKIyBNb3JlIGNvbnZlbmll
bnQgYW5kIHJpZ29yb3VzIHZlcnNpb25zIG9mIGdldF9wcnRfY2ZnLgojICBAbGlzdCA9IGdldF9w
cmludGVybGlzdCgpICAgICAgICBwbGFjZXMgYSBsaXN0IG9mIGFsbCBwcmludGVycyBpbiAkbGlz
dC4KIyAgJWluZm8gPSBnZXRfcHJpbnRlcmluZm8oJHBuYW1lKSAgcmV0dXJucyBhIGhhc2ggb2Yg
dGhlIHByaW50ZXIgaW5mbyBmb3IKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHByaW50ZXIuCiMgICVpbmZvID0gZ2V0X2FsbHByaW50ZXJpbmZvKCkgICAgcmV0dXJucyBhIGhh
c2ggb2YgaGFzaGVzIGNvbnRhaW5pbmcgYWxsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoZSBwcmludGVyIGluZm8gaW4gdGhlIGRhdGFiYXNlCiMgCiMgQWxsIHJvdXRpbmVz
IHJldHVybiAndW5kZWYnIGZvciBlcnJvci4KCiMgZ2xvYmFsIHZhcmlhYmxlcyAobG9jYWwgdG8g
dGhpcyBwYWNrYWdlKQpteSglcHJpbnRlcmluZm8pOwpteSgkcGlfdGltZXN0YW1wKTsKCnN1YiBn
ZXRfcHJpbnRlcmxpc3QgewogICAgbXkoJXBpbmZvKTsKCiAgICBpZiAoICEgZGVmaW5lZCglcGlu
Zm8gPSBnZXRfYWxscHJpbnRlcmluZm8oKSkgKSB7CglyZXR1cm4odW5kZWYpOwogICAgfQogICAg
cmV0dXJuKHNvcnQoa2V5cyglcGluZm8pKSk7Cn0KCnN1YiBnZXRfcHJpbnRlcmluZm8gewogICAg
bXkoJHByaW50ZXIpOwogICAgKCRwcmludGVyKSA9IEBfOwogICAgbXkoJXBpbmZvKTsKCiAgICBp
ZiAoICEgZGVmaW5lZCglcGluZm8gPSBnZXRfYWxscHJpbnRlcmluZm8oKSkgKSB7CglyZXR1cm4o
dW5kZWYpOwogICAgfQogICAgcmV0dXJuKCV7JHBpbmZveyRwcmludGVyfX0pOwp9CgpzdWIgZ2V0
X2FsbHByaW50ZXJpbmZvIHsKICAgIG15KCRtdGltZSwgJGwsICR0bXAsIEBpdGVtcywgJGl0ZW0s
ICRwcmludGVyKTsKCiAgICAkbXRpbWUgPSAoc3RhdCgkUFJUQ0ZHKSlbOV07CiMgICAgcHJpbnQg
ImZpbGUgPSAkUFJUQ0ZHOyAgdGltZXN0YW1wID0gJHBpX3RpbWVzdGFtcDsgIG10aW1lID0gJG10
aW1lXG4iOwogICAgaWYgKCAkcGlfdGltZXN0YW1wICE9ICRtdGltZSApIHsKIwlwcmludCAiUmVy
ZWFkIFBSVENGR1xuIjsKCSVwcmludGVyaW5mbyA9ICgpOwoJaWYgKCAhIG9wZW4oQ0ZHRklMRSwg
JFBSVENGRykgKSB7CgkgICAgcHJpbnQgIlVuYWJsZSB0byBvcGVuICRQUlRDRkcgJCFcbiI7Cgkg
ICAgcmV0dXJuKHVuZGVmKTsKCX0KCXdoaWxlICggZGVmaW5lZCgkbCA9IDxDRkdGSUxFPikgKSB7
CgkgICAgY2hvbXA7CgkgICAgbmV4dCBpZiAkbCA9fiAvXiN8XiQvOwoJICAgIEBpdGVtcyA9IHNw
bGl0KC86Oi8sICRsKTsKCSAgICAkdG1wID0gJGl0ZW1zWzBdOwoJICAgIGlmICggISAoJHRtcCA9
fiAvXk5BTUU9KC4rKSQvKSApIHsKCQlwcmludCAiQmFkIE5BTUUgZW50cnkgaW4gJFBSVENGR1xu
IjsKCQluZXh0OwoJICAgIH0KCSAgICAkcHJpbnRlciA9ICQxOwoJICAgIGZvcmVhY2ggJGl0ZW0g
KCBAaXRlbXMgKSB7CgkJaWYgKCAhICgkaXRlbSA9fiAvXiguKyk9KC4rKSQvKSApIHsKCQkgICAg
cHJpbnQgIkJhZCBwYXJhbWV0ZXIgZW50cnkgaW4gJFBSVENGR1xuIjsKCQkgICAgbmV4dDsKCQl9
CgkJJHByaW50ZXJpbmZveyRwcmludGVyfXskMX0gPSAkMjsKCSAgICB9Cgl9CgljbG9zZShDRkdG
SUxFKTsKCSRwaV90aW1lc3RhbXAgPSAkbXRpbWU7CiAgICB9CiAgICByZXR1cm4oJXByaW50ZXJp
bmZvKTsKfQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwpzdWIgZ2V0X3BhZ2Vjb3VudCB7CiAgICBteSgkcHJpbnRlcikgPSBAXzsKICAg
IG15KCVwaW5mbyk7CiAgICBteShAc25tcHZhbHMpOwogICAgbXkoJHNlc3Npb24pOwoKICAgICVw
aW5mbyA9IGdldF9wcmludGVyaW5mbygkcHJpbnRlcik7CgogICAgIyBUaGUgZm9sbG93aW5nIGxp
bmUgY2FuIGJlIGNvbW1lbnRlZCBvdXQgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KICAgICRTTk1Q
X1Nlc3Npb246OnN1cHByZXNzX3dhcm5pbmdzID0gMTsKICAgIHNubXBfaW5pdG1pYigpOwoKICAg
IHVubGVzcyAoICRzZXNzaW9uID0gU05NUF9TZXNzaW9uLT5vcGVuKCRwaW5mb3tJUH0sICdwdWJs
aWMnLCAxNjEpICkgewoJcmV0dXJuKC0xKTsKICAgIH0KICAgIEBzbm1wdmFscyA9IHNubXBfZ2V0
KCRzZXNzaW9uLCBxdyhwcnRNYXJrZXJMaWZlQ291bnQuMS4xKSk7CiAgICB1bmxlc3MgKCAkI3Nu
bXB2YWxzID49IDAgKSB7CiAgICAgICAgJHNlc3Npb24tPmNsb3NlKCk7CiAgICAgICAgcmV0dXJu
KC0xKTsgICAgICAgICAgICAgIyBXaWxsIGNvbWUgaGVyZSBpZiAnbm9TdWNoTmFtZScgZXJyb3Ih
IQogICAgfQogICAgJHNlc3Npb24tPmNsb3NlKCk7CiAgICByZXR1cm4oJHNubXB2YWxzWzBdKTsK
fQoKMTsK
--=====================_172463765==_
Content-Type: application/octet-stream; name="SNMP_mib.pm";
x-mac-type="504D706D"; x-mac-creator="474B4F4E"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="SNMP_mib.pm"
IyMjIC0qLSBtb2RlOiBQZXJsIC0qLQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgMTAvMDEvOTggcmNjCiMgTW9k
cyBmb3IgY29kZSBvcmdhbml6YXRpb24gY2hhbmdlcyBmb3IgbmV3IHNlcnZlcgojCiMjIyBTTk1Q
X21pYiAtIE1JQiB1dGlsaXRpZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFJvdWdoIGltcGxlbWVudGF0aW9u
IG9mIGdlbmVyYWxpemVkIFNOTVAgdXRpbGl0eSBzdWJyb3V0aW5lcy4KIyBVc2VzIE1JQiBkZWZp
bml0aW9ucyBpbiBNT1NZIGZvcm1hdC4gIE1PU1kgZm9ybWF0IE1JQnMgY2FuIGJlIGNyZWF0ZWQK
IyBmcm9tIEFTTi4xIE1JQnMgdXNpbmcgQUlYJ3MgJ21vc3knIGNvbXBpbGVyICgnbW9zeSAtbyBo
cG5wLmRlZiAtcyBocG5wLm1pYicpLgojIFRoZSByZXN1bHRpbmcgZmlsZXMgY2FuIGJlIGNvbmNh
dGVuYXRlZCB0byBmb3JtICdtaWIuZGVmcycgKHVzdWFsbHkgaW4gL2V0YykuCiMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKIyMjIENyZWF0ZWQgYnk6ICBSaWNrIENvY2hyYW4gIDA3LzI4Lzk4CiMjIwojIyMgMDgvMTEv
OTggcmNjCiMjIyBpbnNlcnQgJ3VzZSBsaWInCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2UgU05NUF9t
aWI7CgpyZXF1aXJlIDUuMDAyOwoKdXNlIHN0cmljdDsKdXNlIHZhcnMgcXcoQElTQSBARVhQT1JU
ICRWRVJTSU9OKTsKdXNlIEV4cG9ydGVyOwp1c2UgbGliIHF3KC4gL3Vzci9sb2NhbC9uZXRwcmlu
dC9saWIpOwp1c2UgQkVSOwoKJFZFUlNJT04gPSAnMS4wMCc7CgpASVNBID0gcXcoRXhwb3J0ZXIp
OwoKQEVYUE9SVCA9IHF3KHNubXBfaW5pdG1pYiBzbm1wX2dldCk7CgojIyMgUHJvdG90eXBlcwpz
dWIgc25tcF9pbml0bWliICgpOwpzdWIgc25tcF9nZXQgKCRAKTsKc3ViIHNubXBfdHJhbnMgKCQp
OwoKc3ViIHZlcnNpb24gKCkgeyAkVkVSU0lPTjsgfQoKIyMjIyBHbG9iYWwgdmFyaWFibGVzCgpt
eSAoJG1pYmluaXQsICRtaWJmaWxlLCAlbWlibGlzdCwgJWVuY29kZWRfb2lkcyk7CiRtaWJpbml0
ID0gMDsKJG1pYmZpbGUgPSAiL2V0Yy9taWIuZGVmcyI7CgojIyMjIFJvdXRpbmVzCgojIFJlYWQg
aW4gTU9TWSBmb3JtYXQgTUlCIGRlZmluaXRpb25zCnN1YiBzbm1wX2luaXRtaWIgKCkKewogICAg
IyBPbmNlIGlzIGVub3VnaAogICAgcmV0dXJuIGlmICRtaWJpbml0OwojICAgIHByaW50ICJJbml0
aWFsaXppbmcgTUlCIGRhdGFcbiI7CiAgICBzcmFuZCgpOwogICAgbXkgKCRuYW1lLCAkcmVmLCBA
cmVzdCk7CiAgICBvcGVuKEYsICRtaWJmaWxlKSBvciBkaWUgIlVuYWJsZSB0byBvcGVuICRtaWJm
aWxlICQhXG4iOwogICAgJG1pYmxpc3R7J2lzbyd9ID0gJy4xJzsKICAgIHdoaWxlICggPEY+ICkg
ewoJcy9ccyotLS4qLy87CgluZXh0IGlmIC9eJC87CgkoJG5hbWUsICRyZWYsIEByZXN0KSA9IHNw
bGl0OwoJJG1pYmxpc3R7JG5hbWV9ID0gJHJlZjsKICAgIH0KICAgIGNsb3NlKEYpOwogICAgJG1p
YmluaXQrKzsKICAgIHJldHVybiAxOwp9CgojIEdpdmVuIGEgc2Vzc2lvbiBJRCBhbmQgYW4gYXJy
YXkgb2YgYWxwaGFudW1lcmljIE9JRHMsIHF1ZXJ5IHRoZSBTTk1QCiMgYWdlbnQgYW5kIHJldHVy
biBhbiBhcnJheSBvZiB2YWx1ZXMuICBXZSBhcmUgYXNzdW1pbmcgdGhhdCB0aGUgdmFsdWVzCiMg
Y29tZSBiYWNrIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBPSURzLgpzdWIgc25tcF9nZXQgKCRA
KQp7CiAgICBteSgkc2Vzc2lvbiwgQG9pZHMpID0gQF87CiAgICBteShAZW9pZHMsICR0bXAsICRy
ZXNwb25zZSwgJGJpbmRpbmdzLCAkYmluZGluZywgJHZhbHVlLCAkb2lkLCBAdmFsdWVzKTsKCiAg
ICBAZW9pZHMgPSAoKTsKICAgIGZvcmVhY2ggKCBAb2lkcyApIHsKCWlmICggISBkZWZpbmVkKCR0
bXAgPSAkZW5jb2RlZF9vaWRzeyRffSkgKSB7CgkgICAgJHRtcCA9IHNubXBfdHJhbnMoJF8pOwoJ
fQoJcHVzaChAZW9pZHMsICR0bXApOwogICAgfQoKICAgIGlmICgkc2Vzc2lvbi0+Z2V0X3JlcXVl
c3RfcmVzcG9uc2UoQGVvaWRzKSkgewoJJHJlc3BvbnNlID0gJHNlc3Npb24tPnBkdV9idWZmZXI7
CgkoJGJpbmRpbmdzKSA9ICRzZXNzaW9uLT5kZWNvZGVfZ2V0X3Jlc3BvbnNlKCRyZXNwb25zZSk7
Cgl3aGlsZSAoJGJpbmRpbmdzIG5lICcnKSB7CgkgICAgKCRiaW5kaW5nLCAkYmluZGluZ3MpID0g
ZGVjb2RlX3NlcXVlbmNlKCRiaW5kaW5ncyk7CgkgICAgKCRvaWQsICR2YWx1ZSkgPSBkZWNvZGVf
YnlfdGVtcGxhdGUoJGJpbmRpbmcsICIlTyVAIik7CgkgICAgcHVzaChAdmFsdWVzLCBwcmV0dHlf
cHJpbnQoJHZhbHVlKSk7Cgl9CiAgICB9IGVsc2UgewoJcmV0dXJuICgpOwogICAgfQogICAgcmV0
dXJuIEB2YWx1ZXM7Cn0KCiMgVHJhbnNsYXRlIGFscGhhbnVtZXJpYyBPSURzIGludG8gbnVtZXJp
YyBPSURzLCBhbmQgdGhlbmNlIGludG8gZW5jb2RlZAojIE9JRHMsIHN1aXRhYmxlIGZvciB0cmFu
c21pc3Npb24gdG8gdGhlIFNOTVAgYWdlbnQuICBFYWNoIHRyYW5zbGF0aW9uCiMgaXMgJ3JlbWVt
YmVyZWQnLgpzdWIgc25tcF90cmFucyAoJCkKewogICAgbXkoJG9pZG5hbWUpID0gQF87CgogICAg
bXkoJG9pZCwgJGZ1bGxuYW1lLCAkb2lkbik7CiAgICAkb2lkID0gJyc7CiAgICAkZnVsbG5hbWUg
PSAkb2lkbmFtZTsKICAgICRvaWRuID0gJG9pZG5hbWU7CiAgICBpZiAoICgkb2lkbiA9fiAvKFte
Ll0qKVwuKC4qKS8pICkgewoJJG9pZG4gPSAkMTsKCSRmdWxsbmFtZSA9ICQxOwoJJG9pZCA9ICQy
OwogICAgfQogICAgd2hpbGUgKCAxICkgewoJJG9pZG4gPSAkbWlibGlzdHskb2lkbn07CglsYXN0
IGlmICEgZGVmaW5lZCgkb2lkbik7Cgkkb2lkbiA9fiAvKFteLl0qKVwuKC4qKS87Cgkkb2lkbiA9
ICQxOwoJJGZ1bGxuYW1lID0gJDEgLiAiLiIgLiAkZnVsbG5hbWU7Cgkkb2lkID0gJDIgLiAiLiIg
LiAkb2lkOwogICAgfQogICAgJG9pZCA9fiBzL1wuJC8vOwogICAgJGZ1bGxuYW1lID1+IHMvXlwu
Ly87CiMgICAgcHJpbnQgIiRmdWxsbmFtZSAkb2lkXG4iOwogICAgJG9pZCA9IGVuY29kZV9vaWQo
c3BsaXQoL1wuLywgJG9pZCkpOwogICAgJGVuY29kZWRfb2lkc3skb2lkbmFtZX0gPSAkb2lkOwog
ICAgcmV0dXJuICRvaWQ7Cn0KCjE7Cg==
--=====================_172463765==_
Content-Type: text/plain; charset="us-ascii"; format=flowed
|Rick Cochran phone: 607-255-7618|
|Network and Computing Systems, Cornell CIT FAX: 607-255-8521|
|730 Rhodes Hall, Ithaca, N.Y. 14853 email:
[email protected]|
--=====================_172463765==_--
From
[email protected] Fri Feb 4 10:27:36 2000
Received: from astart2.astart.com (fw.private [10.0.0.1])
by h4.private (8.9.3/8.9.3) with ESMTP id KAA13519
for <
[email protected]>; Fri, 4 Feb 2000 10:27:36 -0800 (PST)
Received: from postoffice.mail.cornell.edu (POSTOFFICE.MAIL.CORNELL.EDU [132.236.56.7])
by astart2.astart.com (8.9.3/8.9.3) with ESMTP id KAA09845
for <
[email protected]>; Fri, 4 Feb 2000 10:31:18 -0800 (PST)
Received: from gibbie (GIBBIE.CIT.CORNELL.EDU [128.253.64.74])
by postoffice.mail.cornell.edu (8.9.3/8.9.3) with ESMTP id NAA17038
for <
[email protected]>; Fri, 4 Feb 2000 13:31:14 -0500 (EST)
Message-Id: <
[email protected]>
X-Sender:
[email protected] (Unverified)
X-Mailer: QUALCOMM Windows Eudora Pro Version 4.2.0.58
Date: Fri, 04 Feb 2000 13:28:04 -0500
To:
[email protected]
From: Rick Cochran <
[email protected]>
Subject: Re: Perl code for RFC1759 printer MIB
In-Reply-To: <
[email protected]>
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="=====================_187474183==_"
--=====================_187474183==_
Content-Type: text/plain; charset="us-ascii"; format=flowed
At 09:01 AM 2/4/2000 -0800, you wrote:
>Well, as with all stuff, there are some missing bits and pieces.
>
>SNMP_mib.pm
> - /usr/local/netprint/lib - what is supposed to be there?
I have the SNMP_Session and BER perl modules there. They will normally be
in /usr/local/lib/perl5, however.
>######################################################################
># Rough implementation of generalized SNMP utility subroutines.
># Uses MIB definitions in MOSY format. MOSY format MIBs can be created
># from ASN.1 MIBs using AIX's 'mosy' compiler ('mosy -o hpnp.def -s
>hpnp.mib').
># The resulting files can be concatenated to form 'mib.defs' (usually in
>/etc).
>######################################################################
>### Created by: Rick Cochran 07/28/98
>###
>### 08/11/98 rcc
>### insert 'use lib'
>######################################################################
>
>Ummm... is there an alternative to the 'mosy' thing? Is this
>documented? I used to have something like this, but it does not
>appear to be the same.
All you really need is the OIDs. It doesn't matter how you get them. This
was just the easiest way I could find. AIX comes with /etc/mib.defs in
MOSY format, and the 'mosy' MIB compiler. There's another tool called
SMICNG which can generate MOSY format MIBs from ASN.1 MIBs, but it has some
rather strict syntax requirements which vendors seem to ignore with
impugnity. There is a free older version of SMICNG hanging around on the
Internet, or you can pay money.
It's probably much simpler to just hardcode the OIDs into the application.
>npsttalib.pm:
>
>use lib qw(. /usr/local/netprint/lib);
>use npparams;
>use SNMP_mib;
>use SNMP_Session;
>use BER;
npparams contains definitions relevant only to my
application. SNMP_Session and BER are available from CPAN.
>Ummmm... Are these standard PERL modules?
>If so, where? If not, can I get them?
>
>Are there others as well?
There are some other implementations of SNMP modules for Perl, but they're
overly complex.
>Do you have a simple test program that uses this?
Oops. Should have included that. test_printer is attached. This
duplicates code in npstatlib.pm.
Sorry this isn't prettier.
-Rick
--=====================_187474183==_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="test_printer"
#!/usr/common/bin/perl=0A=0A#use diagnostics;=0Ause strict;=0A=0Ause lib=
qw(. /usr/local/netprint/lib);=0Ause npparams;=0Ause npstatlib;=0Ause=
SNMP_mib;=0Ause SNMP_Session;=0Ause BER;=0A=0A#system("scp1=
page2.cit.cornell.edu:/var/netprint/spool/PRTCFG /tmp/PRTCFG.tmp");=0A$PRTC=
FG =3D "/tmp/PRTCFG.tmp";=0A=0A# non-exported but global to the package:=0Au=
se vars qw{=0A $PSTAT_SERVICE_REQ=0A $PSTAT_OFFLINE=0A =
$PSTAT_PAPER_JAM=0A $PSTAT_DOOR_OPEN=0A $PSTAT_TONER_OUT=0A =
$PSTAT_TONER_LOW=0A $PSTAT_PAPER_OUT=0A $PSTAT_PAPER_LOW=0A =
$PSTAT_IDLE=0A $PSTAT_PRINTING=0A $PSTAT_WARMING_UP=0A =
$PSTAT_UNREACHABLE=0A $PSTAT_MAX=0A %statmsg=0A %prtstatmsg=0A};=
=0A=0A# Note: The bit definitions for the first 8 of the items below are=
taken=0A# from the description of the values for=
hrPrinterDetectedErrorState in=0A# RFC1759.=0ABEGIN {=0A =
$PSTAT_SERVICE_REQ =3D 1;=0A $PSTAT_OFFLINE =3D 2;=0A =
$PSTAT_PAPER_JAM =3D 4;=0A $PSTAT_DOOR_OPEN =3D 8;=0A =
$PSTAT_TONER_OUT =3D 16;=0A $PSTAT_TONER_LOW =3D 32;=0A =
$PSTAT_PAPER_OUT =3D 64;=0A $PSTAT_PAPER_LOW =3D 128;=0A $PSTAT_IDLE=
=3D 256;=0A $PSTAT_PRINTING =3D 512;=0A $PSTAT_WARMING_UP =3D 1024;=
=0A $PSTAT_UNREACHABLE =3D 2048;=0A $PSTAT_MAX =3D 2048;=0A=0A =
%statmsg =3D=0A (=0A $PSTAT_SERVICE_REQ, 'Service Requested',=0A =
$PSTAT_OFFLINE, 'Offline',=0A $PSTAT_PAPER_JAM, 'Paper Jam',=0A =
$PSTAT_DOOR_OPEN, 'Door Open',=0A $PSTAT_TONER_OUT, 'Toner Out',=0A =
$PSTAT_TONER_LOW, 'Toner Low',=0A $PSTAT_PAPER_OUT, 'Paper Out',=0A =
$PSTAT_PAPER_LOW, 'Paper Low',=0A $PSTAT_IDLE, 'Idle',=0A =
$PSTAT_PRINTING, 'Printing',=0A $PSTAT_WARMING_UP, 'Warming Up',=0A =
$PSTAT_UNREACHABLE, 'DISCONNECTED, OFFLINE, OR NOT RESPONDING',=0A );=0A=
=0A %prtstatmsg =3D=0A (=0A 3, $PSTAT_IDLE,=0A 4, $PSTAT_PRINTING,=0A =
5, $PSTAT_WARMING_UP,=0A );=0A}=0A=0Amy(%pinfo);=0Amy(@printers);=0Amy($st=
atus, $printer);=0A=0A$| =3D 1;=0A=0Aif ( $#ARGV < 0 ) {=0A if ( !=
defined(%pinfo =3D get_allprinterinfo()) ) {=0A print "get_allprinterinfo=
returned an error\n";=0A }=0A @printers =3D sort keys %pinfo;=0A}=0Ae=
lse {=0A @printers =3D @ARGV;=0A}=0A=0Aforeach ( @printers ) {=0A =
print "Printer: $_\n";=0A if ( $#ARGV < 0 ) {=0A $printer =3D=
$pinfo{$_}{IP};=0A }=0A else {=0A $printer =3D $_;=0A }=0A =
$status =3D get_psatus($printer);=0A my($bits) =3D '';=0A my($i);=0A =
for ( $i =3D 1; $i <=3D $PSTAT_MAX; $i <<=3D 1 ) {=0A $bits =3D ($i &=
$status ? '1' : '0') . $bits;=0A }=0A print " Error Code: $status=
=3D $bits\n";=0A print " Printer Status:\n";=0A my(@msgs) =3D=
err2str($status);=0A foreach ( @msgs ) {=0A print " $_\n";=0A =
}=0A}=0A=0Aexit(0);=0A=0A=0A###############################################=
#########=0A# get_psatus($ip)=0A#=0A# Uses SNMP to find the status and=
returns an errorcode=0A# which can be deciphered in err2str, which will=
return an array of=0A# strings specifying the error(s) occuring.=0A=0Asub=
get_psatus {=0A my($ip) =3D @_;=0A my($community, $session, $type,=
$devstat, $prtstat, $error, $mem, $counter);=0A=0A $community =3D=
'public';=0A=0A # The following line can be commented out for debugging=
purposes.=0A $SNMP_Session::suppress_warnings =3D 1;=0A =
snmp_initmib();=0A if ( ! ($session =3D SNMP_Session->open ($ip,=
$community, 161)) ) {=0A warn "Couldn't open SNMP session to $ip:=
$SNMP_Session::errmsg";=0A return($PSTAT_UNREACHABLE);=0A }=0A =
$session->set_retries(2);=0A ($type, $devstat, $prtstat, $error, $mem,=
$counter) =3D snmp_get($session, qw(sysDescr.0 hrDeviceStatus.1=
hrPrinterStatus.1 hrPrinterDetectedErrorState.1 hrMemorySize.0=
prtMarkerLifeCount.1.1));=0A if ( ! defined($type) )=
{=0A return($PSTAT_UNREACHABLE);=0A }=0A if ( $type =3D~ /^HP/ or=
$type eq '131;he0007156;' ) {=0A ($type) =3D snmp_get($session,=
qw(hrDeviceDescr.1));=0A }=0A=0A my($tmp) =3D unpack("C", $error);=0A=
if ( defined($prtstatmsg{$prtstat}) ) {=0A $tmp |=3D=
$prtstatmsg{$prtstat};=0A }=0A print " Type: $type\n";=0A =
print " Memory: $mem\n";=0A print " Page Counter: =
$counter\n";=0A return($tmp);=0A}=0A
--=====================_187474183==_
Content-Type: text/plain; charset="us-ascii"; format=flowed
|Rick Cochran phone: 607-255-7618|
|Network and Computing Systems, Cornell CIT FAX: 607-255-8521|
|730 Rhodes Hall, Ithaca, N.Y. 14853 email:
[email protected]|
--=====================_187474183==_--