Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

استخدام سعيد

استخدم العلامة -h مع أي أمر happy-* لعرض التعليمات وقائمة الخيارات لهذا الأمر.

ملفات الدولة

مخازن سعيدة وتحافظ بعناية على حالة الهيكل الخاصة بها في ملف JSON بسجل واحد. باستخدام ملف الحالة هذا ، يمكن لـ Happy تشغيل الأوامر المناسبة لإنشاء هيكل أو إزالته.

يوجد ملف الحالة الافتراضية في ~/.happy_state.json . اسم الحالة الافتراضي happy ، كما هو موضح في إخراج happy-state :

ب 201140238

الدول الموازية

يدعم Happy العديد من الحالات المتوازية المتعايشة تملي الحالة الحالية بواسطة متغير البيئة HAPPY_STATE_ID . إذا لم يكن HAPPY_STATE_ID موجودًا في البيئة ، HAPPY_STATE_ID استخدام قيمة الحالة الافتراضية happy .

لم يتم إنشاء HAPPY_STATE_ID أثناء التثبيت السعيد. قم بإنشاء واحدة بقيمة أخرى غير state للتبديل الفوري إلى حالة سعيدة أخرى.

export HAPPY_STATE_ID="sunny"

التحقق الآن happy-state نتائج happy-state مختلفة:

happy-state

State Name:  sunny

يتم الاحتفاظ بكل ولاية في ~/.${HAPPY_STATE_ID}_state.json . للتبديل بين الحالات ، قم بتشغيل أمر export HAPPY_STATE_ID=" <state-name> " مرة أخرى.

إلغاء مع الدول الموازية

إذا كنت تستخدم حالات Happy متوازية وتريد إلغاء تثبيت Happy ، فتأكد من تشغيل happy-state-delete مع happy-state-delete كل حالة. يضمن ذلك إزالة جميع مساحات أسماء الشبكات التي أنشأتها Happy من نظامك دون التأثير على تكوين شبكة مضيف Linux.

على سبيل المثال ، مع حالتين من happy sunny :

export HAPPY_STATE_ID="sunny"
happy-state-delete
export HAPPY_STATE_ID="happy"
happy-state-delete

قم بإزالة كل ملف حالة متوازية يدويًا حسب الحاجة:

rm -f ~/.sunny_state.json
rm -f ~/.sunny_state.json.lock
rm -f ~/.happy_state.json
rm -f ~/.happy_state.json.lock

السجلات

يرسل تطبيق Happy السجلات إلى syslog افتراضيًا. تم إرسال نسخة احتياطية ثانية للسجل إلى /tmp/${HAPPY_STATE_ID}_debug_log.txt .

لعرض سجلات Happy ، قم بتشغيل happy-state -l في نافذة طرفية منفصلة. عند إدخال أوامر Happy ، تُظهر السجلات أوامر shell مشكلات Happy في الخلفية. هذه طريقة جيدة لفهم كيفية عمل Happy ، إذا كنت مهتمًا بمساحات أسماء شبكات Linux.

على سبيل المثال ، يُنشئ happy-node-add node00 عقدة سعيدة. إخراج السجل لهذا الأمر هو:

DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist
DEBUG [Driver:writeState():365] Happy: writing Happy state to file
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

All Driver:CallCmd() خطوط Driver:CallCmd() هي أوامر shell التي يدعوها Happy. ضع في اعتبارك كل سطر في السجل:

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist

# Write the link between node00 and happy000 in ~/.happy_state.json
DEBUG [Driver:writeState():365] Happy: writing Happy state to file

# Create the network namespace for the node
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists

# Bring up the loopback interface within the happy000 namespace
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

نماذج طبولوجيا

تم تضمين نماذج الطبولوجيا في مستودعات Happy و OpenWeave للاختبار. استخدمها أيضًا لتعلم الأوامر لبناء طبولوجيا معقدة.

الطبولوجيا في تنسيق JSON و Shell Script.

جسون

يتم تحميل ملفات طوبولوجيا JSON باستخدام أوامر weave-state-load happy-state-load أو happy-state-load weave-state-load المنسوجة. إذا كان الهيكل يتضمن Weave ، فيجب عليك استخدام weave-state-load لتحميل الهيكل ، وإلا فسيتم تخطي أوامر Weave الخاصة.

على سبيل المثال ، طوبولوجيا بدون نسج:

happy-state-load thread_wifi_ap_internet.json

طوبولوجيا مع نسج:

weave-state-load three_nodes_on_thread_weave.json

لحفظ الهيكل الحالي كملف JSON منفصل لاستخدامه لاحقًا (على سبيل المثال ، برنامج نصي لحالة الاختبار ) ، استخدم happy-shell -s :

happy-shell -s my_topology.json

يؤدي هذا إلى حفظ ملف حالة الهيكل في الدليل $HOME .

البرامج النصية شل

تحتوي ملفات طبولوجيا برنامج شل النصي على مجموعة من أوامر Happy و Weave لإنشاء الهياكل في ملفات JSON المقابلة. لا تحتوي هذه البرامج النصية افتراضيًا على أذونات قابلة للتنفيذ. يمكن تشغيلها بطريقتين:

باستخدام الأمر bash :

bash thread_wifi_ap_internet.sh

من خلال تطبيق أذونات قابلة للتنفيذ:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

ترتيب

لدى Happy ثلاثة ملفات تكوين:

ملف الضبط وصف
~/.happy_conf.json متغيرات التكوين للاستخدام الشخصي أو المكون الإضافي. عيّن هذه القيم باستخدام أمر happy-configuration .
<path-to-happy> /happy/conf/main_config.json متغيرات التكوين الأساسية السعيدة.
<path-to-happy> /happy/conf/log_config.json تكوين السجل.

أضف متغيرات التكوين

نوصيك باستخدام أمر happy-configuration لتعيين أي متغيرات شخصية أو مكون إضافي بخلاف الإعدادات الافتراضية التي يحتاجها النشر المحدد لـ Happy.

على سبيل المثال ، للسماح لـ Happy بمعرفة مكان العثور على دليل Weave test-apps weave_path الاختبار ، قم بتعيين متغير weave_path :

happy-configuration weave_path <path-to-openweave-core>/build/x86_64-unknown-linux-gnu/src/test-apps

سعيد بتخزين متغيرات التكوين في ~/.happy_conf.json .

العمليات في العقد

يوفر Happy أوامر لبدء وإيقاف العمليات داخل عقد محاكاة.

لبدء العملية:

happy-process-start <node-name> <custom-process-name> <command>

على سبيل المثال ، لتشغيل أمر ping بشكل مستمر في عقدة تسمى ThreadNode:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

في المثال أعلاه ، ContinuousPing هو الاسم المحدد من قبل المستخدم للعملية التي يستخدمها Happy لإدارة العملية. استخدم happy-process-wait لتعليق تنفيذ العملية و happy-process-stop العملية.

إخراج العملية في /tmp . على سبيل المثال ، بعد بدء عملية ContinuousPing ، تحقق من الدليل /tmp :

ls /tmp/happy*
/tmp/happy_018691_1524087014.192197_ContinuousPing.out

يحتوي ملف .out هذا على إخراج عملية ContinuousPing.

إستعمال sudo

سعيد يغير تكوين الشبكة الذي يتحكم فيه Linux kernel. نظرًا لأن root فقط يمكنه تغيير تكوين kernel ، يطالبك Happy بإدخال كلمة مرور sudo أثناء العملية.

يستخدم Happy متغير بيئة نظام $SUDO لاستدعاء sudo . إذا لم يتم تعريف $SUDO ، يقوم Happy بإجراء مكالمة sudo عادية.

برمجة بايثون

بعد التثبيت ، يمكن استيراد حزم Happy Python إلى بيئة Python باستخدام بيان import التالي:

import happy

يتم استيراد وحدات الأوامر الفردية الموجودة في /happy كما يلي:

import happy.HappyNodeAdd

لاسترداد خيارات الوحدة ، اتصل بوظيفة option() . على سبيل المثال ، لاسترداد خيارات الوحدة النمطية HappyNodeAdd :

module options
import happy.HappyNodeAdd
options = happy.HappyNodeAdd.option()