زابيكس. ماذا لو كانت الطابعة لا تشارك المعلومات عبر SNMP؟

يوم جيد!



صورةKDPV



هذه المقالة عبارة عن دليل صغير مكتوب في شكل فني إلى حد ما. هناك العديد من الصور في المقال ، مخبأة بعناية في المفسدين.



لمن هذه المقالة؟ بالنسبة إلى مسؤولي النظام المبتدئين الذين ما زالوا على دراية قليلة بأنظمة UNIX ، Zabbix ، ولكنهم يريدون جمع المعلومات مركزيًا من الطابعات.



استهلالي. متاح:



  • Zabbix 5.0.0 تحديث
  • CentOS 8
  • طابعة لا ترسل المعلومات الضرورية حول المواد الاستهلاكية عبر SNMP (في هذا الدليل ، تم أخذ Oki C834 كمثال)
  • تقريبا المعرفة غائبة عن أنظمة Zabbix ، UNIX
  • هناك رغبة كبيرة في جمع المعلومات حول المواد الاستهلاكية من الطابعات مركزيًا.


اذهب!



الأسباب والمبررات



الكسل هو محرك التقدم. ذات صباح جميل ، أدركت أنني كنت كسولًا جدًا بحيث لا يمكنني التجول في الطابعات المثبتة في المكتب من أجل مراقبة حالة المواد الاستهلاكية مثل خراطيش الحبر ووحدات الأسطوانة والشرائط والأفران. واجمع أيضًا من وقت لآخر مؤشرات عدادات الصفحات المطبوعة - على أساسها ، يتم اتخاذ قرار بشأن صيانة الطابعة.



"حسنًا ، هذا هو مقدار الوقت الذي يمكنك توفيره من خلال جمع هذه المعلومات مركزيًا!" - هذا الفكر لم يفارق رأسي. تقرر نشر نظام مراقبة. تم اختيار Zabbix بناءً على نصيحة الرفاق الأكبر سنًا - مع توقع أنه بالإضافة إلى الطابعات ، سيتم توصيل مراقبة الخوادم ومعدات الشبكة تدريجياً.



تم تثبيت CentOS 8 كنظام تشغيل - لأنني على الأقل كنت على دراية به قليلاً. ربما يكتب شخص ما في الوقت الحالي أن ay-ay-ay ، فأنت بحاجة إلى دراسة أنظمة UNIX ، إذا كنت قد توليت بالفعل إدارة النظام. سأجيب عليك - نعم ، أنت محق تمامًا.



تعد دراسة أدلة مراقبة الطابعات بإجراء بسيط للغاية - snmpwalk ، وعزل المعلمات الضرورية ، وربط OID بـ Zabbix ، الربح. لكن الواقع هز هذه الصورة الجميلة قليلاً. لم تكن هناك مؤشرات على حالة المواد الاستهلاكية. لم تكن هناك حتى مماثلة عن بعد. عموما.



مقالة الحصول على الإحصائيات من أجهزة كيوسيرا في Zabbixطلب البحث عن برنامج احتكاري لمراقبة الطابعة واعتراض الاتصال بين البرنامج والطابعة. تم العثور عليه - أداة التكوين ، أداة مساعدة من Oki لمراقبة حالة الطابعات. تنزيل ، تشغيل ، و…. عبر أداة تكوين SNMP ، تتلقى معلومات حول اسم الطابعة وعنوان MAC وإصدار البرنامج. يتم إرسال المعلومات حول المواد الاستهلاكية في جسم حزم TCP / IP.



"حسنًا ، عظيم ، تبدأ المغامرة ،" فكرت. أدى التفكير في خيارات الحل إلى السلسلة المنطقية التالية:



  1. في هذه المرحلة ، لا أعرف كيف ولا أعرف كيفية محاكاة الطلب الذي ترسله أداة التكوين إلى الطابعة بشكل صحيح.
  2. تحتوي الطابعة على صفحة الويب الخاصة بها حيث توفر معلومات حول حالة المستلزمات وعدد الصفحات المطبوعة
  3. يتمثل حل مشكلتي في استخراج (تحليل) المعلومات من صفحة الويب الخاصة بالطابعة وفقًا لجدول زمني ونقل هذه المعلومات بطريقة ما إلى Zabbix.


أعطى البحث عن أداة التحليل النتائج التالية:



  1. سحق
  2. بي أتش بي
  3. بايثون


ملاحظة: إنني أدرك تمامًا أن هناك أدوات تحليل أكثر مما هو موضح في هذه القائمة - ولكن ليس من المنطقي الإشارة إليهم جميعًا ، وبعد ذلك ستفهم السبب.



اخترت باش - وهذا هو السبب:



  1. مثبت مسبقًا على معظم أنظمة UNIX. لست بحاجة إلى تثبيت برامج إضافية.
  2. بساطة. الأوامر منطقية ومفهومة تمامًا بعد دراسة صغيرة لبناء الجملة.
  3. الحاجة إلى تعلم أنظمة UNIX. من الواضح أنه لن يكون من غير الضروري دراسة بناء جملة الأوامر في هذا الاتجاه.


تحليل صفحة ويب الطابعة



قبل أن نبدأ في التحليل ، دعنا نلقي نظرة على ماهية صفحة ويب الطابعة.



ملحوظة
, - . , , , -.



-



صفحة ويب الطابعة
image



لاحظ أن هناك مؤشرات حالة الحبر في أعلى يمين الصفحة. الآن يبقى علينا أن نفهم كيف تظهر هذه المؤشرات على صفحة الويب. RMB-> فحص. الصورة التالية تفتح لنا.



فحص كود الصفحة
image

image



لاحظ أنه يتم الحصول على قيم الحبر بالفعل من خلال صفحة /status.htm.

نرى أن قيم الحبر تنتقل في علامات:



بعد ذلك ، باستخدام JavaScript ، يتم تقريب القيم إلى عشرات وإدراجها في الصفحة.



انتقل إلى الصفحة 192.168. ***. *** / status.htm - ونعم ، نرى قيم الحبر التي نحتاجها حقًا في هذه الصفحة



الحالة. htm
image



نحن نعرف الآن مكان تخزين قيم حالة مسحوق الحبر التي نريدها. لنبدأ في التحليل.



تفسير



ملاحظة: ما يلي سيكون وصفًا لإنشاء برنامج نصي لتحليل الصفحة بأمثلة وصور. سأحاول توضيح الوصف حتى لمن هم على دراية قليلة بباش. إذا كنت تريد قراءة النتيجة بالفعل ، يرجى التمرير أكثر.

لذا باش. لقد مرت نهر روبيكون ، كما قالوا قبل ألفي عام ، على ضفاف نهر يحمل نفس الاسم.

بادئ ذي بدء ، أقترح عليك أن تتعرف على بناء جملة اللغة . إنه بسيط للغاية ومباشر - ولكنه سيساعدنا في البرمجة النصية والأتمتة.



بعد ذلك ، دعنا ننتبه إلى cURL - سطر الأوامر والأداة ، كما هو مذكور في الموقع الرسميهذه الأداة. يدعم cURL عددًا كبيرًا من البروتوكولات ، والتي نحتاج منها إلى دعم HTTP - تذكر أن هذا هو البروتوكول المستخدم "للتواصل" مع صفحة الويب الخاصة بالطابعة.

لنكتب الطلب الأول:



$ curl 192.168.***.***/status.htm


خرج المحطة
image



رداً على ذلك ، يتم إلقاء كمية هائلة من المعلومات مباشرة في سطر الأوامر ، وهو أمر غير ملائم للقراءة في الجهاز ، ناهيك عن معالجة هذه المعلومات.

دعنا نعيد توجيه الإخراج إلى ملف - من الواضح أن هذا سيكون أكثر ملاءمة. سيساعدنا الحرف الخاص ">" في ذلك.



$ curl 192.168.***.***/status.htm > Oki.txt


افتح الملف الناتج في محرر Vi



$ vi Oki.txt


Oki.txt في محرر السادس
image



أفضل بكثير ، أليس كذلك؟ ومع ذلك ، لا نحتاج إلى الصفحة بأكملها على أي حال. مطلوب فقط قيم حالة مسحوق الحبر. نبدأ في عزل البيانات. هذا هو المكان الذي ستساعدنا فيه grep ، وهي أداة تبحث عن الأسطر التي تحتوي على قيمة مساوية لقيمة عادية محددة.



ألق نظرة فاحصة على العلامات التي تحتوي على قيم الحبر. نرى فيها أننا نلتقي بنفس التعبير 'القيمة = ”***“



ملحوظة
? - 100.



ملحوظة
, “hidden”. , . . – , ‘value=”***”’



image



نحن "مزق" النتائج التي تم الحصول عليها من خلال cURL. من أجل تسريع العملية وتصورها قليلاً ، نقوم بإخراج القيم مباشرة إلى الجهاز.



$ curl 192.168.***.***/status.htm | grep ‘value=”***”’ 


نتائج Grep
image



ممتاز. استنتاج موجز بما فيه الكفاية. بعد ذلك ، نحتاج إلى التخلص من النص وترك القيم العددية فقط.



ملحوظة
, – « Zabbix’ !». , . – . .



نقوم بتصفية البيانات النصية ، مع ترك القيم الرقمية فقط. سوف يساعدنا Grep بعلامة -Eo في هذا مرة أخرى. سيسمح فقط بعرض القيم الرقمية.



$ curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’


عرض الأرقام
image



إذن ، حصلنا على القيم العددية المطلوبة. الآن دعنا نحلل مخرجاتنا إلى أسطر منفصلة حتى نتمكن من حفظها بشكل منفصل في ملفات نصية. هذا هو المكان الذي يكون فيه sed ، وهو أداة محرر نصوص متدفقة ، مفيدًا. في حالتنا ، الشيء الأكثر أهمية هو أن sed يمكنه عزل الخطوط الفردية - وهذا بالضبط ما نحتاجه.



Curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 1p


إخراج Sed
image



دعنا نلقي نظرة على الجزء sed. 1p - إخراج السطر الأول. -n - استبعاد كل شيء باستثناء السطر المحدد. كما ترى ، بعد هذا الأمر ، يُظهر الإخراج فقط القيمة العددية لحالة مسحوق الحبر السماوي.



لنبدأ الآن في كتابة السيناريو.



تتميز نصوص Bash بخصوصية معينة مقارنة بنصوص الخفافيش نفسها. يجب أن يبدأوا بـ shebang - "#!". سيتم تفسير الأسطر الأخرى التي تبدأ بـ # على أنها تعليقات.



سيبدو النص كما يلي:



#! /bin/bash 
#This script received toner level's from Oki_834
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 1p >/var/cyan.txt
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 2p >/var/magenta.txt
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 3p >/var/yellow.txt
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 4p >/var/black.txt


أضف ملف البرنامج النصي إلى crontab ، وبالتالي أتمتة تنفيذه. قام المؤلف بتعيين * / 15 * * * * - التنفيذ كل 15 دقيقة.



خلاصة القول - يتم تحليل صفحة الويب الخاصة بالطابعة تلقائيًا ، نحصل على القيم الرقمية التي نحتاجها ونحفظها في الدليل الذي نحتاجه.



نقل القيم المستلمة إلى Zabbix



الآن دعنا ننتقل إلى نقل البيانات إلى Zabbix.



ملحوظة
, , . , , .



لنقم بإنشاء عنصر جديد. نسميها كما نحب ، نحدد نوع وكيل Zabbix.



انتباه
Zabbix-server Zabbix-agent. , , Zabbix-agent.



أهم شيء لدينا في هذه المرحلة هو المفتاح. نحتاج إلى vfs.file.contents [ملف ، <encoding>]. الملف هو المسار المطلق للملف.



إنشاء عنصر في Zabbix
image



نشير إلى مسارنا إلى الملف ونتحقق من صحته. في مخرجات الاختبار ، يجب أن نرى قيمة الحبر الأسود الخاصة بنا.



إتمام الاختبار بنجاح
image



خلاصة القول - لقد قمنا بترحيل البيانات إلى Zabbix ، والآن يمكننا التحكم في حالة المواد الاستهلاكية مركزيًا.



خاتمة



لقد أتقننا الحصول على البيانات من خلال تحليل صفحات الويب. في هذا المثال ، تم أخذ طابعة Oki 834 وتم الحصول على بيانات مسحوق الحبر بنجاح. أقر بمسؤولية أنه تم استخدام نفس الطريقة للحصول على بيانات عن حالة وحدات الأسطوانة والشريط والفرن.



دليل لقطة الشاشة
image



image



وبالتالي ، من الممكن الحصول على معلومات حول المواد الاستهلاكية من جميع الطابعات تقريبًا ، وليس فقط حول الطابعات. الإعراب أداة مريحة إلى حد ما ، وقد أحببت حقًا العمل بها. وإذا كانت مقالتي تساعد شخصًا واحدًا على الأقل ، فهذا لم يكن عبثًا.



كما أود أن أعرب عن امتناني العميقأحمر الشعرو akozhevnikov97والشخص الذي رغب في عدم الكشف عن هويته لمساعدته في كتابة المقال. شكرا للجميع!



All Articles