أتمتة الشبكات باستخدام بايثون
🖧 ما هو:
أتمتة إدارة أجهزة Cisco IOS باستخدام بايثون وNetmiko عبر SSH، بدلًا من إعداد كل جهاز يدويًا عبر الطرفية. مبني ومعروض على مختبر GNS3 2.2.
❓ المشكلة والحل:
إدارة أجهزة الشبكة يدويًا عبر الطرفية بطيئة وعرضة للأخطاء، خصوصًا عند تطبيق نفس الإعداد (مثل VLANs) على عدة أجهزة. والحل مجموعة صغيرة من سكربتات بايثون تتصل عبر SSH وتنفّذ المهام تلقائيًا من مصدر واحد للحقيقة: فحص الاتصال، والنسخ الاحتياطي، والإعداد الجماعي، وتقرير الحالة.
🗺️ معمارية المختبر:
• R1 وR2 — راوترات Cisco c3725 (إصدار IOS 12.4(15)T14)
• SW1 — سويتش الطبقة الثانية: c3725 مع وحدة NM-16ESW (16 منفذًا)
• شبكة إدارة 192.168.56.0/24 (host-only) وشبكة مختبر 10.10.10.0/24
• بايثون يعمل على ويندوز ويصل إلى الأجهزة عبر نفق SSH من خلال GNS3 VM
📜 السكربتات:
• test_connection.py — يفتح جلسة SSH لكل جهاز، يدخل وضع enable، ويؤكّد الوصول
• backup_configs.py — يحفظ الإعداد الفعّال لكل جهاز في ملف مؤرّخ
• health_report.py — يجمع الإصدار ووقت التشغيل والمعالج وعدد الواجهات النشطة، ثم يولّد تقرير Markdown
• bulk_vlan_config.py — يطبّق قائمة VLAN على كل سويتش دفعة واحدة (يدعم --dry-run و--save)
🧰 التقنيات:
• اللغة — Python 3.10
• الأتمتة — Netmiko 4.7 (SSH)، Paramiko
• المخزون — PyYAML (devices.yaml، تعريف واحد لكل جهاز؛ مُستثنى من git لاحتوائه بيانات اعتماد)
• المحاكاة — GNS3 2.2، Dynamips، VirtualBox
التقنيات المستخدمة
طوبولوجيا GNS3 (التقاط مباشر)

لوحة GNS3 الفعلية — R1 وR2 وSW1 بوصلات خضراء، أي أن الأجهزة تعمل ومتصلة. هذه هي الشبكة المُحاكاة التي تقودها السكربتات.
المخطّط المنطقي

العنونة ومسار الوصول: راوترا c3725 وسويتش طبقة ثانية، وشبكة إدارة host-only (192.168.56.0/24) وشبكة مختبر (10.10.10.0/24)، مع وصول بايثون إلى الأجهزة عبر نفق SSH من خلال GNS3 VM.
عرض حيّ

مقطع قصير لـ Netmiko يتصل بـ R1 وR2 وSW1 وينفّذ الأتمتة من البداية إلى النهاية.
فحص الاتصال

يفتح test_connection.py جلسة SSH لكل جهاز ويدخل وضع enable ويؤكّد الوصول — أول ما يُشغَّل قبل أي أتمتة.
نسخ احتياطي تلقائي

يحفظ backup_configs.py الإعداد الفعّال لكل جهاز في ملف مؤرّخ ضمن output_samples/backups/، فيمنحك أرشيفًا مؤرّخًا لكل جهاز.
تقرير حالة الشبكة

يجمع health_report.py الإصدار ووقت التشغيل والمعالج وعدد الواجهات النشطة من كل جهاز ويولّد تقرير Markdown مرتّبًا.
مخرجات جهاز حيّة

جلسة Netmiko من ويندوز تُرجع مخرجات IOS حقيقية — الأتمتة تتحدّث إلى الأجهزة المُحاكاة فعلًا لا إلى بيانات وهمية.