Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Mutlu Kullanım

Herhangi bir happy-* komutuyla -h bayrağını kullanarak o komutun yardımını ve seçenekler listesini görüntüleyin.

Durum dosyaları

Mutlu depolar ve topoloji durumunu tek bir kayıtla bir JSON dosyasında dikkatlice korur. Happy, bu durum dosyasını kullanarak bir topoloji oluşturmak veya kaldırmak için uygun komutları çalıştırabilir.

Varsayılan durum dosyası ~/.happy_state.json . Varsayılan durum adıdır happy görüldüğü gibi, happy-state çıkışı:

happy-state

State Name:  happy

Paralel durumlar

Happy, birlikte var olan birden fazla paralel durumu destekler. Mevcut durum, HAPPY_STATE_ID ortam değişkeni tarafından belirlenir. HAPPY_STATE_ID yoksa, varsayılan durum değeri happy kullanılır.

Mutlu kurulum sırasında HAPPY_STATE_ID oluşturulmaz. Hemen başka bir Mutlu durumuna geçmek için state dışında bir değere sahip bir tane oluşturun.

export HAPPY_STATE_ID="sunny"

Şimdi happy-state kontrol etmek farklı bir happy-state sonuçlanır:

happy-state

State Name:  sunny

Her durum kendi ~/.${HAPPY_STATE_ID}_state.json dosyasında ~/.${HAPPY_STATE_ID}_state.json . Durumlar arasında geçiş yapmak için, export HAPPY_STATE_ID=" <state-name> " komutunu tekrar çalıştırın.

Paralel durumlarla kaldırın

Paralel Mutlu durumları kullanıyorsanız ve Mutlu'yu kaldırmak istiyorsanız, happy-state-delete her durum etkinken çalıştırdığınızdan emin olun. Bu, Happy tarafından oluşturulan tüm ağ ad alanlarının Linux ana bilgisayar ağ yapılandırmasını etkilemeden sisteminizden kaldırılmasını sağlar.

Örneğin, happy ve sunny iki sunny :

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

Her paralel durum dosyasını gerektiği gibi manuel olarak kaldırın:

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

Kütükler

Happy, günlükleri varsayılan olarak syslog gönderir. /tmp/${HAPPY_STATE_ID}_debug_log.txt ikinci bir günlük yedeği gönderilir.

Mutlu günlükleri görüntülemek için happy-state -l ayrı bir terminal penceresinde çalıştırın. Mutlu komutlarını girdiğinizde, günlükler kabuk komutlarını arka planda Mutlu sorunlar gösterir. Linux ağ ad alanlarıyla ilgileniyorsanız, Happy'nin nasıl çalıştığını anlamanın iyi bir yoludur.

Örneğin, happy-node-add node00 , bir Mutlu düğüm oluşturur. Bu komutun günlük çıktısı:

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üm Driver:CallCmd() satırları, Mutlu'nun çağırdığı kabuk komutlarıdır. Günlükteki her satırı düşünün:

# 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

Örnek topolojiler

Örnek topolojiler, test için hem Happy hem de OpenWeave depolarına dahil edilmiştir. Karmaşık topolojiler oluşturmak için komutları öğrenmek için de bunları kullanın.

Topolojiler JSON ve Shell Script formatındadır.

JSON

JSON topoloji dosyaları, happy-state-load veya weave-state-load komutları kullanılarak weave-state-load . Topoloji Weave içeriyorsa, topolojiyi weave-state-load için weave-state-load kullanmalısınız, aksi takdirde Weave'e özgü komutlar atlanır.

Örneğin, Weave içermeyen bir topoloji:

happy-state-load thread_wifi_ap_internet.json

Weave ile bir topoloji:

weave-state-load three_nodes_on_thread_weave.json

Mevcut topolojinizi daha sonra kullanmak üzere ayrı bir JSON dosyası olarak kaydetmek için (örneğin, bir test senaryosu ), happy-shell -s kullanın:

happy-shell -s my_topology.json

Bu, topoloji durum dosyasını $HOME dizinine kaydeder.

Kabuk betikleri

Kabuk komut dosyası topoloji dosyaları, ilgili JSON dosyalarında topolojileri oluşturmak için Happy ve Weave komutlarını içerir. Bu komut dosyalarının varsayılan olarak çalıştırılabilir izinleri yoktur. İki şekilde çalıştırılabilirler:

bash komutunu kullanarak:

bash thread_wifi_ap_internet.sh

Yürütülebilir izinler uygulayarak:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

Yapılandırma

Happy'in üç yapılandırma dosyası vardır:

Yapılandırma Dosyası Açıklama
~/.happy_conf.json Kişisel veya eklenti kullanımı için yapılandırma değişkenleri. happy-configuration komutunu kullanarak bu değerleri ayarlayın.
<path-to-happy> /happy/conf/main_config.json Birincil Mutlu yapılandırma değişkenleri.
<path-to-happy> /happy/conf/log_config.json Günlük yapılandırması.

Yapılandırma değişkenleri ekleyin

happy-configuration özgü dağıtımınızın ihtiyaç duyduğu varsayılanların ötesinde herhangi bir kişisel veya eklenti değişkenini ayarlamak için happy-configuration komutunu kullanmanızı öneririz.

Örneğin, weave_path test komut dosyaları için Weave test-apps dizinini nerede bulacağını bildirmek için weave_path değişkenini ayarlayın:

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

Happy, yapılandırma değişkenlerini ~/.happy_conf.json içinde depolar.

Düğümlerdeki işlemler

Happy, simüle edilmiş düğümlerdeki işlemleri başlatmak ve durdurmak için komutlar sağlar.

Bir işlemi başlatmak için:

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

Örneğin, ThreadNode adlı bir düğümde sürekli olarak ping çalıştırmak için:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

Yukarıdaki örnekte, ContinuousPing, Happy'nin süreci yönetmek için kullandığı işlemin kullanıcı tanımlı adıdır. Süreç yürütmeyi askıya almak için happy-process-wait ve süreci sonlandırmak için happy-process-stop kullanın.

İşlem çıktısı /tmp . Örneğin, ContinuousPing işlemini başlattıktan sonra /tmp dizinini kontrol edin:

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

Bu .out dosyası ContinuousPing işleminin çıktısını içerir.

sudo kullanımı

Mutlu, Linux çekirdeği tarafından kontrol edilen ağ yapılandırmasını değiştirir. Çekirdek yapılandırmasını yalnızca root değiştirebildiğinden, Happy, işlem sırasında sudo parolasını girmenizi ister.

Mutlu kullandığı $SUDO çağrı için sistem ortam değişkeni sudo . $SUDO tanımlanmamışsa, Happy normal bir sudo çağrısı yapar.

Python komut dosyası

Kurulumdan sonra, Happy Python paketleri aşağıdaki import ifadesi kullanılarak bir Python ortamına alınabilir:

import happy

/happy bağımsız komut modülleri aşağıdaki şekilde içe aktarılır:

import happy.HappyNodeAdd

Modül seçeneklerini almak için option() işlevini çağırın. Örneğin, HappyNodeAdd modül seçeneklerini almak için:

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