Kısa cevap Printer-MIB içindeki sarf açıklaması, maksimum kapasite ve mevcut seviye tabloları aynı indeksle okunur. Toner yüzdesi, geçerli değerler için mevcut seviye / maksimum kapasite × 100 formülüyle hesaplanır.
Yazıcı tarafını hazırlayın
- SNMP’yi yalnızca yönetim ağında etkinleştirin; internetten erişime açmayın.
- Mümkünse SNMPv3 kullanın. SNMPv2c gerekiyorsa public yerine benzersiz ve salt okunur bir community tanımlayın.
- Yönetim cihazından yazıcının 161/UDP portuna erişilebildiğini doğrulayın.
Printer-MIB tablolarını okuyun
# Linux / net-snmp kurulu bir yönetim cihazı
snmpwalk -v2c -c <COMMUNITY> <YAZICI_IP> 1.3.6.1.2.1.43.11.1.1.6.1
snmpwalk -v2c -c <COMMUNITY> <YAZICI_IP> 1.3.6.1.2.1.43.11.1.1.8.1
snmpwalk -v2c -c <COMMUNITY> <YAZICI_IP> 1.3.6.1.2.1.43.11.1.1.9.1...43.11.1.1.6.1Sarf açıklamasıSiyah toner, cyan toner veya drum gibi sarfın adını verir.
...43.11.1.1.8.1Maksimum kapasiteSarfın üretici tarafından bildirilen tam kapasitesidir.
...43.11.1.1.9.1Mevcut seviyeSarfın o anda bildirdiği kalan miktardır.
Aynı indeksleri eşleştirin
Her OID satırının sonundaki indeks aynı sarfı temsil eder. Örneğin açıklama .1.1, maksimum kapasite .1.1 ve mevcut seviye .1.1 değerleri birlikte değerlendirilmelidir. Farklı indeksleri birbirine bölmeyin.
Negatif veya anlamsız değer gelirse
Printer-MIB’de -1, -2 ve -3 gibi değerler bilinmeyen, belirsiz veya kullanılamayan seviyeleri ifade edebilir. Bu değerlerde yüzde hesaplamayın; arayüzde “Okunamadı” gösterin. Bazı üreticiler standart OID yerine üreticiye özel OID kullanır; model bazında doğrulama gerekebilir.
Okunan değeri güvenli şekilde yüzdeye çevirme
Maksimum kapasite sıfırdan büyük ve mevcut seviye negatif değilse hesaplama yapın. Özel negatif SNMP değerlerini yüzdeye çevirmeyin.
# SNMP'den okunan örnek değerleri yüzdeye çevir
$Maksimum = 10000
$Mevcut = 2500
if ($Maksimum -gt 0 -and $Mevcut -ge 0) {
"Toner seviyesi: %{0}" -f [math]::Round(($Mevcut/$Maksimum)*100,1)
} else {
"Toner seviyesi okunamadı"
}