Tayyip Eser
ENin
← Arşive dön

Doküman · 10 Ağu 2026

SNMP ile yazıcı toner seviyesi okuma

Printer-MIB üzerinden maksimum kapasite ve mevcut sarf seviyesini okuyup yüzdeye çevirme.

SNMPPrinter-MIBNode.js

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.

01

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.
02

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 kapasite

Sarfın üretici tarafından bildirilen tam kapasitesidir.

...43.11.1.1.9.1Mevcut seviye

Sarfın o anda bildirdiği kalan miktardır.

03

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.

FORMÜLToner yüzdesi = (Mevcut seviye ÷ Maksimum kapasite) × 100Örnek: 2.500 ÷ 10.000 × 100 = %25
04

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ı"
}