Pexpect: أتمتة الطرفية في بايثون

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة

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

Pexpect (Python Expect) هي مكتبة متقدمة لأتمتة تطبيقات سطر الأوامر التفاعلية، مبنية على مفهوم الأداة الكلاسيكية Expect. توفر آلية قوية لتشغيل العمليات الفرعية، ومراقبة مخرجاتها، والاستجابة لأنماط نصية محددة، وإرسال الأوامر برمجيًا، مما يحاكي سلوك المستخدم البشري بفعالية.

ما هي مكتبة Pexpect

التاريخ والمفهوم

Pexpect هي تطبيق بايثون لمفهوم تم تجسيده لأول مرة في لغة Tcl عبر أداة Expect التي أنشأها دون ليبس في عام 1990. الفكرة الأساسية هي إنشاء واجهة "ذكية" للتفاعل مع البرامج التفاعلية من خلال محطة زائفة (pty).

الهندسة ومبادئ العمل

تعمل المكتبة بناءً على المبادئ الأساسية التالية:

المحطة الزائفة (PTY): تنشئ Pexpect محطة زائفة تحاكي محطة حقيقية للعملية الفرعية. وهذا يسمح للبرامج بالتصرف كما لو كانت تتفاعل مع مستخدم حقيقي.

التخزين المؤقت والتحليل: يتم تخزين جميع البيانات الواردة من العملية الفرعية مؤقتًا وتحليلها للتحقق من مطابقتها للأنماط المحددة.

النموذج القائم على الأحداث: تعمل المكتبة وفق نموذج قائم على الأحداث، حيث يتم إنشاء الأحداث عند اكتشاف الأنماط المتوقعة في مخرجات البرنامج.

الإمكانيات الرئيسية

  • تشغيل والتحكم في العمليات التفاعلية
  • دعم التعبيرات العادية لمطابقة الأنماط
  • نظام مرن للمهلات الزمنية
  • إمكانيات متقدمة لتسجيل السجلات
  • معالجة ترميزات مختلفة
  • التكامل مع العمليات غير المتزامنة

التثبيت والإعداد

المتطلبات النظامية

تتطلب Pexpect نظامًا متوافقًا مع POSIX (Linux، macOS، Unix). المكتبة لا تدعم Windows بشكل مباشر، ولكن يمكن أن تعمل عبر WSL (Windows Subsystem for Linux).

عملية التثبيت

pip install pexpect

للتثبيت مع التبعيات الإضافية:

pip install pexpect[async]

الاستيراد والإعداد الأساسي

import pexpect
import sys
import signal

أساسيات العمل مع Pexpect

إنشاء وإدارة العمليات

كلاس spawn - أساس المكتبة

كلاس spawn هو العنصر المركزي في Pexpect ويوفر واجهة لإنشاء وإدارة العمليات الفرعية:

child = pexpect.spawn('ssh user@hostname', encoding='utf-8', timeout=30)

المعلمات الرئيسية للمنشئ:

  • command: الأمر المراد تنفيذه
  • args: قائمة وسائط الأمر
  • timeout: المهلة الزمنية العامة بالثواني
  • encoding: الترميز للعمل مع السلاسل النصية
  • logfile: ملف أو دفق لتسجيل السجلات
  • echo: تشغيل/إيقاف الصدى
  • preexec_fn: دالة يتم تنفيذها قبل تشغيل العملية

أنماط الانتظار والمطابقة

طريقة expect() واختلافاتها

طريقة expect() هي الأداة الرئيسية لانتظار أنماط محددة في مخرجات العملية الفرعية.

توصيات