Google setzt sich dafür ein, die Rassengerechtigkeit für schwarze Gemeinschaften zu fördern. Siehe wie.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Happy Usage

Verwenden Sie das Flag -h mit einem happy-* Befehl happy-* , um die Hilfe und die Liste der Optionen für diesen Befehl anzuzeigen.

Statusdateien

Happy speichert und behält seinen Topologiezustand sorgfältig in einer JSON-Datei mit einem einzigen Datensatz bei. Mit dieser Statusdatei kann Happy die entsprechenden Befehle ausführen, um eine Topologie zu erstellen oder zu entfernen.

Die Standardstatusdatei befindet sich unter ~/.happy_state.json . Der Standardstatusname ist happy , wie in der Ausgabe für den happy-state :

 happy-state

State Name:  happy 

Parallelzustände

Happy unterstützt mehrere gleichzeitig existierende parallele Zustände. Der aktuelle Status wird durch die Umgebungsvariable HAPPY_STATE_ID vorgegeben. Wenn HAPPY_STATE_ID in der Umgebung nicht vorhanden ist, wird der Standardstatuswert von happy verwendet.

HAPPY_STATE_ID wird während der Happy-Installation nicht erstellt. Erstellen Sie einen mit einem anderen Wert als state um sofort in einen anderen Happy-Status zu wechseln.

 export HAPPY_STATE_ID="sunny"

Wenn Sie nun den happy-state überprüfen, erhalten Sie einen anderen Status:

 happy-state

State Name:  sunny 

Jeder Status wird in einer eigenen Datei ~/.${HAPPY_STATE_ID}_state.json . Führen Sie den export HAPPY_STATE_ID=" <state-name> " erneut aus, um zwischen den Zuständen zu wechseln.

Deinstallieren Sie mit parallelen Zuständen

Wenn Sie parallele Happy happy-state-delete und Happy deinstallieren möchten, stellen Sie sicher, dass Sie happy-state-delete mit jedem aktiven Status ausführen. Dadurch wird sichergestellt, dass alle von Happy erstellten Netzwerk-Namespaces von Ihrem System entfernt werden, ohne dass dies Auswirkungen auf die Linux-Host-Netzwerkkonfiguration hat.

Zum Beispiel mit zwei Zuständen von happy und sunny :

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

Entfernen Sie jede parallele Statusdatei nach Bedarf manuell:

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

Protokolle

Happy sendet standardmäßig Protokolle an syslog . Eine zweite Protokollsicherung wird an /tmp/${HAPPY_STATE_ID}_debug_log.txt gesendet.

Führen Sie zum Anzeigen von Happy-Protokollen happy-state -l in einem separaten Terminalfenster aus. Wenn Sie Happy-Befehle eingeben, werden in den Protokollen die Shell-Befehle Happy-Probleme im Hintergrund angezeigt. Dies ist ein guter Weg, um zu verstehen, wie Happy funktioniert, wenn Sie an Linux-Netzwerk-Namespaces interessiert sind.

Zum Beispiel erstellt happy-node-add node00 einen Happy-Knoten. Die Protokollausgabe für diesen Befehl lautet:

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

Alle Driver:CallCmd() sind die Shell-Befehle, die Happy aufruft. Betrachten Sie jede Zeile im Protokoll:

# 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

Beispieltopologien

Beispieltopologien sind zum Testen sowohl im Happy- als auch im OpenWeave-Repository enthalten. Verwenden Sie sie auch, um die Befehle zum Erstellen komplexer Topologien zu lernen.

Topologien sind im JSON- und Shell-Skriptformat.

JSON

JSON-Topologiedateien werden mit den Befehlen happy-state-load oder weave-state-load . Wenn die Topologie Weave enthält, müssen Sie weave-state-load , um die Topologie zu laden. Andernfalls werden die Weave-spezifischen Befehle übersprungen.

Zum Beispiel eine Topologie ohne Webart:

happy-state-load thread_wifi_ap_internet.json

Eine Topologie mit Weave:

weave-state-load three_nodes_on_thread_weave.json

Verwenden Sie happy-shell -s um Ihre aktuelle Topologie als separate JSON-Datei für die spätere Verwendung (z. B. ein Testfallskript ) zu speichern:

happy-shell -s my_topology.json

Dadurch wird die Topologiestatusdatei im Verzeichnis $HOME gespeichert.

Shell-Skripte

Shell-Skript-Topologiedateien enthalten eine Reihe von Happy- und Weave-Befehlen zum Erstellen der Topologien in den entsprechenden JSON-Dateien. Diese Skripte haben standardmäßig keine ausführbaren Berechtigungen. Sie können auf zwei Arten ausgeführt werden:

Mit dem Befehl bash :

bash thread_wifi_ap_internet.sh

Durch Anwenden ausführbarer Berechtigungen:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

Aufbau

Happy hat drei Konfigurationsdateien:

Konfigurationsdatei Beschreibung
~/.happy_conf.json Konfigurationsvariablen für den persönlichen oder Plug-In-Gebrauch. Stellen Sie diese Werte mit dem Befehl happy-configuration .
<path-to-happy> /happy/conf/main_config.json Primäre Happy-Konfigurationsvariablen.
<path-to-happy> /happy/conf/log_config.json Protokollkonfiguration.

Konfigurationsvariablen hinzufügen

Wir empfehlen, dass Sie den Befehl happy-configuration , um alle persönlichen Variablen oder Plug-In-Variablen festzulegen, die über die Standardeinstellungen hinausgehen, die Ihre spezifische Bereitstellung von Happy erfordert.

Um Happy beispielsweise weave_path , wo sich das Weave- test-apps Verzeichnis für Testskripte befindet, legen Sie die Variable weave_path :

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

Happy speichert Konfigurationsvariablen in ~/.happy_conf.json .

Prozesse in Knoten

Happy bietet Befehle zum Starten und Stoppen von Prozessen in simulierten Knoten.

So starten Sie einen Prozess:

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

So führen Sie beispielsweise kontinuierlich einen Ping in einem Knoten mit dem Namen ThreadNode aus:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

Im obigen Beispiel ist ContinuousPing der benutzerdefinierte Name für den Prozess, mit dem Happy den Prozess verwaltet. Verwenden Sie happy-process-wait um die Prozessausführung happy-process-stop , und happy-process-stop , um den Prozess abzubrechen.

Die Prozessausgabe erfolgt in /tmp . Überprüfen Sie beispielsweise nach dem Starten des ContinuousPing-Prozesses das Verzeichnis /tmp :

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

Diese .out Datei enthält die Ausgabe für den ContinuousPing-Prozess.

Verwendung von sudo

Happy ändert die Netzwerkkonfiguration, die vom Linux-Kernel gesteuert wird. Da nur root die Kernelkonfiguration ändern kann, fordert Happy Sie auf, während des Betriebs das sudo Passwort einzugeben.

Happy verwendet die $SUDO , um sudo aufzurufen. Wenn $SUDO nicht definiert ist, führt Happy einen normalen sudo Aufruf durch.

Python-Skripte

Nach der Installation können Happy Python-Pakete mithilfe der folgenden import Anweisung in eine Python-Umgebung import werden:

import happy

Einzelne in /happy gefundene Befehlsmodule werden wie folgt importiert:

import happy.HappyNodeAdd

Rufen Sie die Funktion option() , um option() abzurufen. So HappyNodeAdd Sie beispielsweise die Optionen des HappyNodeAdd Moduls ab:

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