Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Sử dụng vui vẻ

Sử dụng cờ -h với bất kỳ lệnh happy-* để xem trợ giúp và danh sách các tùy chọn cho lệnh đó.

Tệp trạng thái

Lưu trữ hạnh phúc và duy trì cẩn thận trạng thái cấu trúc liên kết của nó trong tệp JSON với một bản ghi duy nhất. Sử dụng tệp trạng thái này, Happy có thể chạy các lệnh thích hợp để tạo hoặc xóa cấu trúc liên kết.

Tệp trạng thái mặc định được đặt tại ~/.happy_state.json . Tên trạng thái mặc định là happy , như được thấy trong đầu ra happy-state :

happy-state

State Name:  happy

Trạng thái song song

Happy hỗ trợ nhiều trạng thái song song cùng tồn tại. Trạng thái hiện tại được quy định bởi biến môi trường HAPPY_STATE_ID . Nếu HAPPY_STATE_ID không tồn tại trong môi trường, giá trị trạng thái mặc định của happy sẽ được sử dụng.

HAPPY_STATE_ID không được tạo trong khi cài đặt Happy. Tạo một giá trị khác với state để chuyển ngay sang trạng thái Hạnh phúc khác.

export HAPPY_STATE_ID="sunny"

Bây giờ kiểm tra happy-state kết quả ở một trạng thái khác:

happy-state

State Name:  sunny

Mỗi trạng thái được duy trì trong ~/.${HAPPY_STATE_ID}_state.json của riêng nó. Để chuyển đổi giữa các trạng thái, hãy chạy lại lệnh export HAPPY_STATE_ID=" <state-name> " .

Gỡ cài đặt với các trạng thái song song

Nếu bạn sử dụng song song các trạng thái Happy và bạn muốn gỡ cài đặt Happy, hãy đảm bảo chạy happy-state-delete với mỗi trạng thái đang hoạt động. Điều này đảm bảo tất cả các không gian tên mạng do Happy tạo đều bị xóa khỏi hệ thống của bạn mà không ảnh hưởng đến cấu hình mạng máy chủ Linux.

Ví dụ, với hai trạng thái happysunny :

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

Xóa thủ công từng tệp trạng thái song song nếu cần:

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

Nhật ký

Happy gửi nhật ký vào syslog theo mặc định. Bản sao lưu nhật ký thứ hai được gửi tới /tmp/${HAPPY_STATE_ID}_debug_log.txt .

Để xem nhật ký Happy, hãy chạy happy-state -l trong một cửa sổ dòng lệnh riêng biệt. Khi bạn nhập các lệnh Happy, nhật ký sẽ hiển thị các lệnh shell Các vấn đề về Happy trong nền. Đây là một cách tốt để hiểu cách Happy hoạt động, nếu bạn quan tâm đến không gian tên mạng Linux.

Ví dụ: happy-node-add node00 tạo ra một nút Happy. Đầu ra nhật ký cho lệnh này là:

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

Tất cả các dòng Driver:CallCmd() là các lệnh shell mà Happy gọi. Hãy xem xét từng dòng trong nhật ký:

# 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

Cấu trúc liên kết mẫu

Các cấu trúc liên kết mẫu được bao gồm trong cả hai kho lưu trữ Happy và OpenWeave để thử nghiệm. Cũng sử dụng chúng để học các lệnh để xây dựng các cấu trúc liên kết phức tạp.

Các cấu trúc liên kết có định dạng JSON và Shell Script.

JSON

Các tệp cấu trúc liên kết JSON được tải bằng cách sử dụng các lệnh happy-state-load hoặc weave-state-load . Nếu cấu trúc liên kết bao gồm Weave, bạn phải sử dụng weave-state-load để tải cấu trúc liên kết, nếu không, các lệnh dành riêng cho Weave sẽ bị bỏ qua.

Ví dụ: một cấu trúc liên kết không có Weave:

happy-state-load thread_wifi_ap_internet.json

Một cấu trúc liên kết với Weave:

weave-state-load three_nodes_on_thread_weave.json

Để lưu cấu trúc liên kết hiện tại của bạn dưới dạng tệp JSON riêng biệt để sử dụng sau này (ví dụ: kịch bản trường hợp thử nghiệm ), hãy sử dụng happy-shell -s :

happy-shell -s my_topology.json

Thao tác này sẽ lưu tệp trạng thái cấu trúc liên kết trong thư mục $HOME .

Tập lệnh shell

Các tệp cấu trúc liên kết tập lệnh Shell chứa tập hợp các lệnh Happy và Weave để tạo cấu trúc liên kết trong các tệp JSON tương ứng. Các tập lệnh này theo mặc định không có quyền thực thi. Chúng có thể được chạy theo hai cách:

Bằng cách sử dụng lệnh bash :

bash thread_wifi_ap_internet.sh

Bằng cách áp dụng các quyền thực thi:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

Cấu hình

Happy có ba tệp cấu hình:

Tập tin cấu hình Sự miêu tả
~/.happy_conf.json Các biến cấu hình để sử dụng cá nhân hoặc trình cắm thêm. Đặt các giá trị này bằng lệnh happy-configuration .
<path-to-happy> /happy/conf/main_config.json Các biến cấu hình Happy chính.
<path-to-happy> /happy/conf/log_config.json Cấu hình nhật ký.

Thêm các biến cấu hình

Chúng tôi khuyên bạn nên sử dụng lệnh happy-configuration để đặt bất kỳ biến số cá nhân hoặc trình cắm nào ngoài giá trị mặc định mà việc triển khai Happy cụ thể của bạn cần.

Ví dụ: để cho Happy biết nơi tìm thư mục test-apps Weave cho các tập lệnh thử nghiệm, hãy đặt biến weave_path :

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

Happy lưu trữ các biến cấu hình trong ~/.happy_conf.json .

Các quá trình trong các nút

Happy cung cấp các lệnh để bắt đầu và dừng các quy trình trong các nút mô phỏng.

Để bắt đầu một quy trình:

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

Ví dụ, để liên tục chạy một ping trong một nút có tên ThreadNode:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

Trong ví dụ trên, ContinuousPing là tên do người dùng định nghĩa cho quy trình mà Happy sử dụng để quản lý quy trình. Sử dụng happy-process-wait để tạm dừng quá trình thực thi và happy-process-stop để kết thúc quá trình.

Đầu ra của quy trình là /tmp . Ví dụ: sau khi bắt đầu quy trình ContinuousPing, hãy kiểm tra /tmp :

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

Tệp .out này chứa đầu ra cho quá trình ContinuousPing.

Cách sử dụng sudo

Happy thay đổi cấu hình mạng được điều khiển bởi nhân Linux. Vì chỉ có root có thể thay đổi cấu hình kernel, Happy nhắc bạn nhập sudo mật khẩu trong hoạt động.

Happy sử dụng biến môi trường hệ thống $SUDO để gọi sudo . Nếu $SUDO không được xác định, Happy thực hiện một cuộc gọi sudo bình thường.

Tập lệnh Python

Sau khi cài đặt, các gói Happy Python có thể được nhập vào môi trường Python bằng cách sử dụng câu lệnh import sau:

import happy

Các mô-đun lệnh riêng lẻ được tìm thấy trong /happy được nhập như sau:

import happy.HappyNodeAdd

Để truy xuất các tùy chọn mô-đun, hãy gọi hàm option() . Ví dụ: để truy xuất các tùy chọn mô-đun HappyNodeAdd :

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