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 :

happy-state

State Name:  happy

מדינות מקבילות

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, הקפד להפעיל את 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

יומנים

Happy שולח יומנים ל- syslog כברירת מחדל. גיבוי יומן שני נשלח אל /tmp/${HAPPY_STATE_ID}_debug_log.txt .

כדי להציג יומני Happy, הפעל את happy-state -l בחלון מסוף נפרד. כשאתה מזין פקודות Happy, היומנים מציגים את פקודות הפגז 'בעיות שמח' ברקע. זו דרך טובה להבין כיצד Happy עובד, אם אתה מעוניין במרחבי שמות ברשת לינוקס.

לדוגמה, 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() הן פקודות הפגז שאליו קורא. שקול כל שורה ביומן:

# 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 נטענים באמצעות הפקודות happy-state-load או happy-state-load weave-state-load . אם הטופולוגיה כוללת Weave, עליך להשתמש weave-state-load כדי לטעון את הטופולוגיה, אחרת דילוגים על הפקודות הספציפיות לאריגה.

לדוגמא, טופולוגיה ללא מארג:

happy-state-load thread_wifi_ap_internet.json

טופולוגיה עם Weave:

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 משתני תצורה ראשוניים של Happy.
<path-to-happy> /happy/conf/log_config.json תצורת יומן.

הוסף משתני תצורה

אנו ממליצים לך להשתמש בפקודה ' happy-configuration כדי להגדיר משתנים אישיים או תוספים מעבר לברירות המחדל שהפריסה הספציפית שלך מצריכה.

לדוגמה, כדי ליידע את Happy היכן למצוא את ספריית test-apps Weave עבור סקריפטים לבדיקה, הגדר את המשתנה weave_path :

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

Happy מאחסן משתני תצורה ב- ~/.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 יכול לשנות את תצורת הליבה, Happy מבקש ממך להזין את סיסמת sudo במהלך הפעולה.

Happy משתמש במשתנה סביבת המערכת $SUDO כדי לקרוא ל- sudo . אם $SUDO אינו מוגדר, שמח עשה נורמלי sudo שיחה.

תסריט פייתון

לאחר ההתקנה, חבילות Python Happy ניתן לייבא לתוך סביבת Python באמצעות הבא import בהצהרה:

import happy

מודולי פקודה בודדים שנמצאו ב- /happy מיובאים כדלקמן:

import happy.HappyNodeAdd

כדי לאחזר את אפשרויות המודול, התקשר לפונקציה option() . לדוגמא, כדי לאחזר אפשרויות של מודול HappyNodeAdd :

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