শুভ ব্যবহার

সেই কমান্ডের জন্য সাহায্য এবং বিকল্পগুলির তালিকা দেখতে যেকোন happy-* কমান্ডের সাথে -h পতাকা ব্যবহার করুন।

স্টেট ফাইল

হ্যাপি স্টোর এবং সাবধানে একটি একক রেকর্ড সহ একটি 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-state-delete চালানো নিশ্চিত করুন। এটি নিশ্চিত করে যে হ্যাপি দ্বারা তৈরি সমস্ত নেটওয়ার্ক নেমস্পেসগুলি লিনাক্স হোস্ট নেটওয়ার্ক কনফিগারেশনকে প্রভাবিত না করেই আপনার সিস্টেম থেকে সরানো হয়েছে।

উদাহরণস্বরূপ, 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 এ।

শুভ লগগুলি দেখতে, একটি পৃথক টার্মিনাল উইন্ডোতে happy-state -l চালান। আপনি যখন হ্যাপি কমান্ড প্রবেশ করেন, লগগুলি পটভূমিতে শেল কমান্ড হ্যাপি সমস্যাগুলি দেখায়। আপনি যদি লিনাক্স নেটওয়ার্ক নেমস্পেসগুলিতে আগ্রহী হন তবে হ্যাপি কীভাবে কাজ করে তা বোঝার এটি একটি ভাল উপায়।

উদাহরণস্বরূপ, 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

সমস্ত 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

নমুনা টপোলজি

পরীক্ষার জন্য হ্যাপি এবং ওপেনওয়েভ রিপোজিটরিতে নমুনা টপোলজি অন্তর্ভুক্ত করা হয়েছে। জটিল টপোলজি নির্মাণের কমান্ড শিখতেও এগুলি ব্যবহার করুন।

টপোলজি JSON এবং Shell Script ফরম্যাটে আছে।

JSON

JSON টপোলজি ফাইল 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-configuration কমান্ড ব্যবহার করার পরামর্শ দিই যে ডিফল্টের বাইরে যেকোন ব্যক্তিগত বা প্লাগ-ইন ভেরিয়েবল সেট করতে যা আপনার হ্যাপির নির্দিষ্ট স্থাপনার প্রয়োজন।

উদাহরণস্বরূপ, টেস্ট স্ক্রিপ্টের জন্য 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-process-start <node-name> <custom-process-name> <command>

উদাহরণস্বরূপ, ThreadNode নামে একটি নোডে ক্রমাগত একটি পিং চালানোর জন্য:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

উপরের উদাহরণে, ContinuousPing হল প্রক্রিয়াটির ব্যবহারকারী-নির্ধারিত নাম যা হ্যাপি প্রক্রিয়া পরিচালনা করতে ব্যবহার করে। প্রসেস এক্সিকিউশন স্থগিত করার জন্য 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 সংজ্ঞায়িত না হলে, হ্যাপি একটি সাধারণ sudo কল করে।

পাইথন স্ক্রিপ্টিং

ইনস্টলেশনের পরে, নিম্নলিখিত import বিবৃতি ব্যবহার করে হ্যাপি পাইথন প্যাকেজগুলি একটি পাইথন পরিবেশে আমদানি করা যেতে পারে:

import happy

/happy পাওয়া স্বতন্ত্র কমান্ড মডিউলগুলি নিম্নরূপ আমদানি করা হয়েছে:

import happy.HappyNodeAdd

মডিউল বিকল্পগুলি পুনরুদ্ধার করতে, option() ফাংশনটি কল করুন। উদাহরণস্বরূপ, HappyNodeAdd মডিউল বিকল্পগুলি পুনরুদ্ধার করতে:

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