سوف أشارككم تجربة ممتعة في إنشاء أداة محمولة للعمل مع الشبكة.
تصدير
لقد عملت لعدة سنوات في مقدمي الخدمات ، من الصغيرة إلى الفيدرالية. عندما جئت إلى "Federal" واجهت الكثير من الروتين ، وكانت هناك رغبة في أتمتة هذه العملية الروتينية للغاية.
عام 2013. لدي صديق عمل أيضًا في أحد "الفيدراليين" ، حيث كان يربط بين العملاء ، وكانت هناك قصة عندما أعطاني هاتفًا وصعد إلى العلية لفعل شيء ما باستخدام المفتاح. وقفت في الأسفل مع هاتف فتحت عليه صفحة ويب بها نصوص مختلفة مثيرة للاهتمام. نفذت هذه البرامج النصية فحص المنفذ الموجود على المحول ، ومسح الأخطاء وأشياء أخرى.
أي أن المهندس ، بعد وصوله إلى العنوان ، لم يزعج المسؤول بسبب هذا الهراء ، لأنه هو نفسه كان لديه أداة للعمل مع الشبكة.
إنه يونيو 2018 ، وقد شعرت بالعذاب من الأفكار التي تقول "لماذا لا تكتب روبوتًا يفحص المعدات من مستويات مختلفة (الأساسية ، التجميع ، الوصول)؟" كانت المشكلة أنني فقط أردت التخلص من الروتين ، والباقي عاش اليوم.
اختيار لغة البرمجة والنظام الأساسي
يا رفاق ، بالطبع بايثون . في وقت طرح الأفكار ، كان لدي بالفعل بعض المهارات وخبرة قليلة في البرمجة النصية. تم اختيار المنصة لتكون ودية - Telegram بسبب كل سكان تكنولوجيا المعلومات يعيشون هناك.
اختيار مكتبات لكتابة الروبوت
1. مكتبة للعمل مع Telegram. كان pyTelegramBotAPI يتلاشى ، خاصة أثناء فترة الحظر ، كنت أرغب في تكوين صداقات بسرعة مع وكلاء وأشياء أخرى. اخترت python-telegram-bot وأخذت المحادثة كأساس .
2. مكتبة للعمل مع المعدات. بسبب بساطة العمل ، وقع اختياري - python3-netsnmp .
لقد تم وضع الأساس ، حان وقت الكتابة.
قاد
كانت الشبكة عبارة عن حديقة حيوانات من الحديد وكان علينا أن نأخذ بائعًا منفصلاً ونعمل معه. ومن الشروط المهمة الأخرى وجود MIBs لأداء المهام.
كانت إحدى المهام هي التحقق من طول الكبل وحالة الأزواج ، والتحقق من حالة المنافذ ووجود أخطاء على المنافذ.
الآن سيكتب الكثير قائلين - "حسنًا ، ما الذي لا يمكن عمله بدون SNMP؟" جوابي هو - "نعم ، لا يمكنك ، إذا كنت ترغب في التقاط البيانات بطريقة بشرية عادية - عندئذٍ فقط SNMP.
الآن شخص ما يحرق بالفعل مكانًا واحدًا ويكتب أن NETCONF فقط.
بعد اجتياز معدات الوصول وتنفيذ العمل معها في الروبوت ، واجهت حقيقة أنه في بعض الأحيان ، بالفعل ، لمهام محددة ، والتي لا يحلها بروتوكول SNMP ، يجب أن أذهب إلى المعدات.
جاءت مكتبة netmiko لإنقاذي- وما زلت مسرورًا بها. لقد حلت الكثير من المشاكل التي لا تتعلق حتى بالروبوت. كمية المعدات المدعومة هي مجرد حريق.
لقد وجدت أيضًا أن مكتبة ipaddress مفيدة جدًا للتحقق من عناوين IP.
بشكل عام ، عند البرمجة ، أخذت في الاعتبار الكثير من الفروق الدقيقة ، من تخويل مستخدم في روبوت إلى منحه حقوقًا مختلفة.
نمت الوظيفة
نعم ، ونمت الوظيفة ، ومعها نما الدعم لبعض المعدات. لقد أضفت معدات الوصول إلى الراديو وأجهزة استقبال KTV البصرية.
جاءني الناس بطريقة ما وقالوا إننا سنضع أجهزة الاتصال الداخلي. أنا أفهم برأسي أن المكان سوف يقع على كتفي وعلى أكتاف زملائي.
بدأت أشعر ، أنظر. قرأت API ، والتي كانت جيدة هناك. اخترت أبسط مكتبة للعمل مع طلبات HTTP و HTTPS .
بعد أن عملت بالفعل مع أجهزة الاتصال الداخلي ، كانت هناك احتياجات لقاعدة بيانات ، ولكن كالعادة لم ترغب الأوبرا الكسولة في إجهادها كثيرًا. لذلك ، وقع الاختيار على sqlite3. تم اختيار المكتبة أيضًا بأبسط ما يمكن - إنها مجموعة بيانات .
تتجمع الغيوم.
في مرحلة ما ، أصبح العمل كثيرًا بجنون ، وفي الواقع ، عاشت بنات أفكاري بمفردها. هناك الكثير من العمل والمال القليل - حسنًا ، أعتقد أنك ستلتقط الملاحظة. قررت ترك هذه المؤسسة. بعد أن عملت لعدة سنوات في الحكومة الفيدرالية ، قمت بتحسين مهاراتي في العمل بلغة برمجة. كنت سعيدا جدا بهذا.
الخاتمة
ربما تكون هذه قصة كبيرة أو ليست قصة بحد ذاتها قد انتهت. Networker في رأيي بدون برمجة في أي مكان ، خاصة مع حديقة حيوان من الحديد. نتيجة لذلك ، كانت ساحة المعدات المدعومة على النحو التالي:
- 23 طرازًا من مفاتيح الوصول
- 3 نماذج من مستقبلات KTV البصرية
- 4 نماذج من مفاتيح الهيكل
- طراز واحد لجهاز توجيه الهيكل
- 3 نماذج من معدات الوصول إلى الراديو