Google is committed to advancing racial equity for Black communities. See how.
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

استفاده مبارک

برای مشاهده راهنما و لیست گزینه های مربوط به آن فرمان ، از پرچم -h با هر فرمان happy-* .

پرونده های دولتی

فروشگاه مبارک را نگه می دارد و وضعیت توپولوژی خود را با دقت در یک پرونده JSON با یک سابقه واحد حفظ می کند. با استفاده از این پرونده حالت ، مبارک می تواند دستورالعمل های مناسب را برای ایجاد یا حذف توپولوژی اجرا کند.

پرونده حالت پیش فرض در ~/.happy_state.json . نام حالت پیش فرض happy ، همانطور که در خروجی happy-state مشاهده می شود:

happy-state

State Name:  happy

حالات موازی

خوشحال چندین حالت موازی همزمان را پشتیبانی می کند. وضعیت فعلی توسط متغیر محیط HAPPY_STATE_ID دیکته شده است. اگر HAPPY_STATE_ID کند در محیط وجود ندارد، ارزش حالت پیش فرض از happy استفاده شده است.

در حین نصب مبارک HAPPY_STATE_ID ایجاد نمی شود. یکی را با ارزش دیگری غیر از state تا بلافاصله به حالت مبارک دیگری بروید.

export HAPPY_STATE_ID="sunny"

اکنون بررسی نتایج happy-state دیگری:

happy-state

State Name:  sunny

هر ایالت در ~/.${HAPPY_STATE_ID}_state.json شود. برای جابجایی بین ایالات ، دستور export HAPPY_STATE_ID=" <state-name> " را دوباره اجرا کنید.

حذف با حالت های موازی

اگر از حالت های موازی مبارک استفاده می کنید و می خواهید Happy را حذف کنید ، مطمئن شوید که با استفاده از هر حالت فعال ، حالت happy-state-delete . این تضمین می کند که تمام مکانهای نام شبکه ایجاد شده توسط Happy بدون اینکه روی پیکربندی شبکه میزبان لینوکس تأثیر بگذارند ، از سیستم شما خارج می شوند.

به عنوان مثال ، با دو حالت 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

سیاههها

مبارک به طور پیش فرض سیاهههای مربوط را به syslog فرستد. نسخه پشتیبان تهیه گزارش دوم به /tmp/${HAPPY_STATE_ID}_debug_log.txt ارسال می /tmp/${HAPPY_STATE_ID}_debug_log.txt .

برای مشاهده سیاهههای مربوط به مبارک ، happy-state -l در یک پنجره ترمینال جداگانه اجرا کنید. وقتی دستورات مبارک را وارد می کنید ، سیاههها دستورات پوسته را نشان می دهند. اگر علاقه مند به مکان های نام شبکه لینوکس هستید ، این یک روش خوب برای درک چگونگی کار مبارک است.

به عنوان مثال ، happy-node-add node00 گره Happy ایجاد می کند. خروجی ورود به سیستم برای این دستور:

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

خطوط کلیه Driver:CallCmd() دستورات پوسته است که تماسهای 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

پرونده های توپولوژی JSON با استفاده از دستورات weave-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 .

اسکریپت های پوسته

پرونده های توپولوژی اسکریپت پوسته شامل مجموعه دستورات مبارک و بافت برای ایجاد توپولوژی در پرونده های JSON مربوطه است. این اسکریپت ها به طور پیش فرض مجوزهای اجرایی ندارند. با دو روش قابل اجرا هستند:

با استفاده از دستور bash :

bash thread_wifi_ap_internet.sh

با استفاده از مجوزهای اجرایی:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

پیکربندی

مبارک دارای سه پرونده پیکربندی است:

فایل پیکربندی شرح
~/.happy_conf.json متغیرهای پیکربندی برای استفاده شخصی یا افزونه. این مقادیر را با استفاده از دستور happy-configuration .
<path-to-happy> /happy/conf/main_config.json متغیرهای پیکربندی اولیه مبارک.
<path-to-happy> /happy/conf/log_config.json پیکربندی ورود به سیستم

متغیرهای پیکربندی را اضافه کنید

ما توصیه می کنیم برای تنظیم متغیرهای شخصی یا افزونه ای فراتر از پیش فرض هایی که استقرار خاص شما از نیازهای Happy را دارد ، از دستور happy-configuration استفاده کنید.

به عنوان مثال ، برای اینکه اطلاع دهید مبارک از کجا می تواند فهرست test-apps Weave test-apps برای اسکریپت های آزمایشی پیدا کند ، متغیر 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>

به عنوان مثال ، برای اجرای مداوم پینگ در یک گره به نام 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

خوشحال پیکربندی شبکه ای که توسط هسته لینوکس کنترل می شود را تغییر می دهد. از آنجا که فقط root می تواند پیکربندی هسته را تغییر دهد ، مبارک از شما خواسته می کند که رمز عبور sudo را در حین کار وارد کنید.

مبارک از متغیر محیط سیستم $SUDO استفاده می کند تا sudo . اگر $SUDO تعریف نشده باشد ، Happy یک تماس sudo عادی برقرار می کند.

اسکریپت پایتون

پس از نصب ، بسته های Happy Python را می توان با استفاده از عبارت import زیر import یک محیط Python کرد:

import happy

ماژول های فرمان فردی که در /happy شده اند به شرح زیر وارد می شوند:

import happy.HappyNodeAdd

برای بازیابی گزینه های ماژول ، با عملکرد option() تماس بگیرید. به عنوان مثال ، برای بازیابی گزینه های ماژول HappyNodeAdd :

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