ใช้แฟล็ก -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
ขึ้นระหว่างการติดตั้ง Happy สร้าง 1 ค่าที่ไม่ใช่ state
เพื่อเปลี่ยนไปใช้สถานะ Happy อื่นทันที
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 จะถูกนําออกจากระบบของคุณโดยไม่ส่งผลกระทบต่อการกําหนดค่าเครือข่ายโฮสต์ของ Linux
ตัวอย่างเช่น หากมี happy
และ sunny
จะมี 2 สถานะ ดังนี้
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
จะสร้างโหนด 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()
บรรทัดคือคําสั่ง Shell ที่การโทรมีความสุข
โปรดพิจารณาแต่ละบรรทัดในบันทึก
# 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 สําหรับการทดสอบ และใช้คําสั่งดังกล่าวเพื่อเรียนรู้คําสั่งเพื่อสร้างโทโพโลยีที่ซับซ้อน
- มีความสุข:
/topologies
- เปิด Weave:
/src/test-apps/happy/topologies/standalone
โทโพโลยีอยู่ในรูปแบบ JSON และ Shell Script
JSON
ระบบจะโหลดไฟล์โทโพโลยี JSON โดยใช้คําสั่ง happy-state-load
หรือ weave-state-load
หากโทโพโลยีมี Weave คุณต้องใช้ weave-state-load
เพื่อโหลดโทโพโลยี มิเช่นนั้น ระบบจะข้ามคําสั่ง Weave โดยเฉพาะ
เช่น โทโพโลยีที่ไม่มี Weave ดังนี้
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
สคริปต์ Shell
ไฟล์โทโพโลยีสคริปต์ Shell มีชุดคําสั่ง Happy และ Weave เพื่อสร้างโทโพโลยีในไฟล์ JSON ที่เกี่ยวข้อง สคริปต์เหล่านี้โดยค่าเริ่มต้น จะไม่มีไฟล์ปฏิบัติการ โดยจะเรียกใช้ได้ 2 วิธีดังนี้
ใช้คําสั่ง bash
bash thread_wifi_ap_internet.sh
การใช้สิทธิ์ปฏิบัติการ:
chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh
การกำหนดค่า
Happy มีไฟล์การกําหนดค่า 3 ไฟล์ ได้แก่
ไฟล์การกําหนดค่า | คำอธิบาย |
---|---|
~/.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 ต้องการ
ตัวอย่างเช่น หากต้องการให้ Happy ทราบว่าจะค้นหาไดเรกทอรี 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>
ตัวอย่างเช่น ในการเรียกใช้คําสั่ง ping ในโหนดที่ชื่อ ThreadNode อย่างต่อเนื่อง ให้ทําดังนี้
happy-process-start ThreadNode ContinuousPing ping 8.8.8.8
ในตัวอย่างข้างต้น ContinversaPing เป็นชื่อที่ผู้ใช้กําหนดสําหรับกระบวนการที่ Happy ใช้ในการจัดการกระบวนการ ใช้ happy-process-wait
เพื่อระงับการดําเนินการของกระบวนการ และ happy-process-stop
เพื่อยุติกระบวนการ
เอาต์พุตการประมวลผลจะอยู่ใน /tmp
ตัวอย่างเช่น หลังจากเริ่มต้นกระบวนการ ContinciesPing แล้ว ให้ตรวจสอบไดเรกทอรี /tmp
ดังนี้
ls /tmp/happy*
/tmp/happy_018691_1524087014.192197_ContinuousPing.out
ไฟล์ .out
นี้มีเอาต์พุตสําหรับกระบวนการแบบต่อเนื่อง
การใช้ sudo
Happy เปลี่ยนการกําหนดค่าเครือข่ายที่ควบคุมโดยเคอร์เนล Linux
เนื่องจากมีเพียง root
เท่านั้นที่เปลี่ยนการกําหนดค่าเคอร์เนลได้ Happy จะแจ้งให้คุณป้อนรหัสผ่าน sudo
ในระหว่างการดําเนินการ
Happy ใช้ตัวแปรสภาพแวดล้อมของระบบ $SUDO
ในการเรียกใช้ sudo
หากไม่ได้กําหนด $SUDO
ไว้ แฮปปี้จะโทรหา sudo
ตามปกติ
การเขียนสคริปต์ Python
หลังจากติดตั้งแล้ว คุณจะนําเข้าแพ็กเกจ Happy Python ไปยังสภาพแวดล้อม Python ได้โดยใช้คําสั่ง import
ต่อไปนี้
import happy
โมดูลคําสั่งแต่ละรายการที่พบใน /happy
จะถูกนําเข้าดังนี้
import happy.HappyNodeAdd
หากต้องการเรียกตัวเลือกโมดูล ให้เรียกใช้ฟังก์ชัน option()
เช่น หากต้องการเรียกข้อมูลตัวเลือกโมดูล HappyNodeAdd
ให้ทําดังนี้
module options import happy.HappyNodeAdd options = happy.HappyNodeAdd.option()