Monitorowanie poziomu tuszu i statusu drukarek – jak napisać własne narzędzie dla biura

cpp-polska.pl 3 tygodni temu

Czy zarządzanie flotą kilkudziesięciu urządzeń drukujących różnych marek przyprawia Cię o ból głowy? Czy nieprzewidziany brak tonera znowu paraliżuje pracę kluczowego działu biura? Artykuł pokaże, jak samodzielnie odpytywać sprzęt dzięki protokołów sieciowych, zbudować własny skrypt i zintegrować go z systemami automatyzacji. Wdrożenie takiego rozwiązania całkowicie eliminuje przestoje w codziennej pracy. Dzięki temu niezbędne materiały eksploatacyjne, takie jak tusze do drukarek brother, zamawiasz z bezpiecznym wyprzedzeniem.

Artykuł sponsorowany

Dlaczego fabryczny monitoring drukarek w firmie często zawodzi?

Oprogramowanie dostarczane bezpośrednio przez producentów sprzętu sprawdza się zwykle w warunkach domowych, ale nie zdaje egzaminu w środowisku korporacyjnym. Rozproszona flota sprzętowa składa się z urządzeń wielu różnych marek, co mocno komplikuje zarządzanie w skali całej sieci. Instalowanie dedykowanej aplikacji dla wszystkich producenta na stacjach roboczych i serwerach obciąża zasoby oraz uniemożliwia sprawną centralizację danych.

Konsekwencją takiego podejścia jest chaos administracyjny i brak spójnego raportowania. Powoduje to, iż jakość wydruku spada zauważalnie pod koniec pojemności wkładu, a sprzęt powiadamia o tym zbyt późno. Brak materiałów w decydującym momencie naraża pracowników na opóźnienia i stres. Skuteczny monitoring drukarek w firmie wymaga stworzenia zunifikowanego narzędzia, które odpytuje urządzenia w ustandaryzowany sposób, niezależnie od nazwy widniejącej na obudowie.

[!]

Według statystyk, aż 75% użytkowników drukarek doświadcza różnego rodzaju problemów technicznych, a nagły brak tonera to jedna z najczęstszych przyczyn zgłoszeń do helpdesku. Centralizacja monitorowania sprzętu w dziale IT znacząco zmniejsza to ryzyko.

Jak odczytać stan urządzenia przez SNMP i bazy zarządzania?

Podstawą ustandaryzowanego odpytywania urządzeń jest protokół SNMP, który komunikuje się ze sprzętem dzięki standardowego portu UDP 161. Baza Printer MIB stanowi kluczową strukturę dla administratorów IT, ponieważ zawiera precyzyjnie opisane parametry każdego elementu maszyny. Zrozumienie tego standardu ułatwia pozyskiwanie danych niezależnie od tego, czy odpytujesz duży kombajn biurowy czy mniejszy kartridż lokalny.

Zastosowanie odpowiednich identyfikatorów pozwala wyciągnąć precyzyjne wartości liczbowe dla wybranego wkładu. Obecny poziom substancji drukującej odczytasz dzięki OID prtMarkerSuppliesLevel (1.3.6.1.2.1.43.11.1.1.9.1). Z kolei maksymalną pojemność zasobnika sprawdzisz, odpytując wskaźnik prtMarkerSuppliesMaxCapacity (1.3.6.1.2.1.43.11.1.1.8.1).

Aby otrzymać jasną i czytelną dla człowieka wartość, konieczne jest zastosowanie prostej logiki matematycznej. Wystarczy podzielić obecny poziom przez pojemność maksymalną, a następnie pomnożyć uzyskany wynik przez 100. Daje to klarowne procentowe zużycie, co stanowi podstawę do budowania dalszych reguł w systemie IT.

Interpretacja specyficznych stanów i wartości granicznych

Sprzęt sieciowy przesyła czasem nietypowe kody błędów zamiast twardych wartości liczbowych. Wartość “-2” oznacza stan nieznany, co ma miejsce bardzo często w przypadku pojemników na zużyty toner, w których precyzyjny odczyt optyczny jest niemożliwy. Z kolei wartość “-3” oznacza “jest jeszcze” (status OK) – urządzenie potwierdza, iż zasobnik jest na swoim miejscu, ale nie potrafi wskazać konkretnego procentu zapełnienia. Skrypt interpretujący te specyficzne stany skutecznie zabezpiecza cały system przed generowaniem fałszywych alarmów.

Piszemy własny skrypt do monitorowania drukarek w Pythonie

Zbudowanie własnego narzędzia opiera się na zaprojektowaniu prostej pętli, która przyjmuje listę adresów IP i asynchronicznie odpytuje kolejne hosty. Wykorzystując stabilne biblioteki pokroju pysnmp lub easysnmp, łatwo zamkniesz cały proces w kilku funkcjach. Wymaga to odpowiedniego dopasowania architektury, aby program sprawdzał urządzenia równolegle i nie blokował głównego wątku przy problemach z połączeniem. Twój własny skrypt do monitorowania drukarek pozwala na pełną niezależność od producenta rozwiązań komercyjnych.

Niektóre urządzenia, na przykład modele marki Konica Minolta, prezentują indeksy wkładów w formacie tekstowym, co komplikuje bezpośrednie przetwarzanie wyników. Rozwiązaniem jest dynamiczne mapowanie po opisie zasobu widocznym pod identyfikatorem OID .43.11.1.1.6.1. Dzięki temu mechanizm precyzyjnie ustala, o który SNMP drukarka poziom tonera zaraportowała i czy jest to zasobnik główny, czy bęben obrazujący.

from pysnmp.hlapi import * def check_toner_level(ip_address, community_string="public"): level_oid = ObjectType(ObjectIdentity('1.3.6.1.2.1.43.11.1.1.9.1.1')) max_oid = ObjectType(ObjectIdentity('1.3.6.1.2.1.43.11.1.1.8.1.1')) iterator = getCmd( SnmpEngine(), CommunityData(community_string, mpModel=1), UdpTransportTarget((ip_address, 161)), ContextData(), level_oid, max_oid ) errorIndication, errorStatus, errorIndex, varBinds = next(iterator) if not errorIndication and not errorStatus: current_level = int(varBinds[0][1]) max_capacity = int(varBinds[1][1]) if max_capacity > 0 and current_level >= 0: return (current_level / max_capacity) * 100 return None

IPP i panele webowe, czyli jak sprawdzić status drukarki sieciowej bez SNMP

W rygorystycznych korporacyjnych środowiskach sieciowych domyślny ruch UDP bywa zablokowany na poziomie zapory sieciowej w celu podniesienia bezpieczeństwa. Blokuje to podstawową warstwę warstwę zarządzania i wymusza poszukiwanie alternatyw. Protokół IPP (Internet Printing Protocol) doskonale sprawdza się jako opcja zapasowa i dostarcza kompletny status drukarki sieciowej.

Wykorzystanie bezpłatnego narzędzia systemowego ipptooldaje dostęp do szczegółowych danych telemetrycznych. Wykonanie polecenia ipptool -tv ipp://adres_ip/ipp/print get-printer-attributes.test pozwala pobrać dane o aktualnej gotowości oraz kodach ostrzeżeń. Ostatecznością pozostaje stworzenie mechanizmu web scraping dla administracyjnych paneli webowych. To podejście jest jednak ryzykowne, ponieważ jakakolwiek zmiana struktury HTML podczas cichej aktualizacji systemu układowego powoduje zaprzestanie działania parsera.

Architektura alertów i ciągłe monitorowanie poziomu tuszu

Odczyt surowych parametrów stanowi tylko połowę sukcesu, pełną skuteczność osiągniesz budując bezawaryjną logikę przetwarzającą liczby na komunikaty. Aktywne monitorowanie poziomu tuszu opiera się na integracji narzędzia powiadamiającego, takiego jak Webhook, powiadomienia e-mail lub bezpośredni wpis do firmowego komunikatora Slack. Poważnym wyzwaniem pozostaje szum informacyjny, dlatego mechanizm musi rygorystycznie filtrować alerty, uruchamiając wysyłkę wyłącznie poniżej progu 10 procent.

Poniższe kroki pomogą zbudować przejrzystą i logiczną strukturę przepływu informacji we własnym systemie alarmowym:

  • Odpytanie urządzenia i weryfikacja poprawności połącznia oraz formatu odebranych danych.
  • Porównanie surowego wyniku ze zdefiniowanym w bazie progiem krytycznym.
  • Sprawdzenie flagi powiadomienia w pliku stanu lub lokalnej bazie SQL.
  • Zablokowanie wysyłki lub wysłanie odpowiednio sformatowanego komunikatu na dedykowany kanał.

Zapis historii i prognozowanie zużycia

Gromadzenie informacji historycznych zamienia program w potężne narzędzie diagnostyczne i logistyczne, budujące spójną wizję wykorzystania sprzętu. Odczyty z licznika prtMarkerLifeCount wraz z notatkami o systematycznych spadkach wkładów lądują bezpośrednio w bazie relacyjnej. Prosta analiza zarejestrowanych trendów pozwala na skuteczną ekstrapolację, czyli wyliczenie średniego spadku wartości dla danego wkładu. Kalkulacja zwraca szacunkową liczbę dni pozostałych do awarii lub koniecznej wymiany kasety, eliminując element zaskoczenia.

Integracja z ekosystemem biurowym i automatyzacja zaopatrzenia

Kod w Pythonie to rozwiązanie samodzielne, które jednak rozwija skrzydła dopiero po osadzeniu w istniejących procesach operacyjnych przedsiębiorstwa. Zebrane przez polecenia dane bez kłopotu wypchniesz w postaci surowych pakietów do systemu Zabbix, konfigurując opcję Zabbix Sender. Dla fanów IoT optymalnym kanałem transmisji informacji do systemu Home Assistant będzie protokół MQTT, który znakomicie sprawdza się w ciągłym zrzucie telemetrii.

Zaawansowana integracja wykracza poza samo sprawdzanie wkładów i bezpośrednio ingeruje w zarządzanie logistyczne w firmie. Zbudowane reguły automatycznie informują systemy ERP, uruchamiając proces generowania zapotrzebowań zakupowych w oparciu o bieżący próg rezerw w magazynie. Wybór dotyczy zakupu wariantu pod szyldem oryginalnym oraz opcji wskazującej na niezależny zamiennik. Cały proces jest transparentny, a optymalizacja kosztów długoterminowych staje się łatwa w utrzymaniu.

Bezpieczeństwo protokołów, czyli jak nie udostępnić drukarek całemu światu

Otwarty port zarządzania 161 stanowi ogromne ryzyko bezpieczeństwa, umożliwiając skanerom sieciowym bezkarne badanie całego obwodu firmowego. Domyślne wartości konfiguracyjne instalowane przez producentów sprawiają, iż intruz bez trudu podejrzy infrastrukturę i topologię. Wyjściem jest natychmiastowa zmiana ustawień logowania, zastępując powszechne hasło “public” silnym i długim łańcuchem znaków. To ogranicza ryzyko przejęcia urządzeń w przypadku błędów segmentacji sieci.

Wymuś zmianę trybu komunikacji, przechodząc na standard SNMPv3, który domyślnie wykorzystuje mocne mechanizmy uwierzytelniania. Ustawienie reguł authPriv z wykorzystaniem silnych algorytmów zabezpieczających, takich jak SHA i AES, szyfruje przesyłane informacje w obrębie podsieci. Koniecznie zmień tryb portów na opcję polegającą wyłącznie na odczycie, ponieważ uprawnienia do zapisu (read-write) dają potencjalnemu hakerowi furtkę do trwałej modyfikacji firmware’u.

W 2018 roku odkryto, iż tysiące drukarek sieciowych znanych marek miało otwarty SNMP z domyślnymi ustawieniami. Umożliwiało to bezpośrednie wyciągnięcie loginów administratorów i odczytanie pełnych konfiguracji sieciowych z powiązanych serwerów wprost z pamięci podręcznej sprzętu.

Najczęściej zadawane pytania

Jak zlokalizować odpowiednie OID dla nietypowego modelu drukarki?

Uruchom badanie drzewa, wpisując polecenie snmpwalk i adresując zapytanie bezpośrednio pod podsieć 1.3.6.1.2.1.43. Prześledzenie tego zakresu pozwala precyzyjnie zmapować układ zmiennych, które nietypowa jednostka zwraca jako dane statusowe maszyny.

Czy skrypt w Pythonie obciąży sieć lokalną firmy?

Dobrze skonstruowany program wykorzystuje wywołania asynchroniczne oraz pakiety UDP, które nie zajmują krytycznego pasma transmisji danych. Działanie narzędzia z ustalonym interwałem na poziomie kilkunastu minut jest dla sieci całkowicie niewidoczne i bezpieczne dla pozostałych użytkowników.

Które parametry bezpieczeństwa włączyć przed wdrożeniem SNMPv3?

Należy w pierwszej kolejności ustawić zasady pracy na model authPriv, uruchamiający kryptografię w warstwie połączeniowej. Ważne jest także zabezpieczenie urządzenia długimi hasłami dostępu oraz przypisanie uprawnień filtrowania zapytań tylko do wskazanych adresów IP pochodzących z monitorującego serwera.

Samodzielnie napisane oprogramowanie telemetrii gwarantuje spokój oraz bezawaryjną i precyzyjną pracę urządzeń w sieci biurowej. Takie podejście uwalnia czas specjalistów działu IT, a wszystkie sprzęty działają stabilnie, nie zatrzymując kluczowych procesów w przedsiębiorstwie.

Idź do oryginalnego materiału