Проверить параметры bash

Две машины в разных (частных) сетях не могут видеть друг друга, если обе не объявили маршруты друг к другу. Например, если у вас есть одна машина с адресом 10.0.3.1 и сетевой маской 255.255.255.0, а другая машина с адресом 10.0.4.1 и той же маской (класса C), они не могут видеть друг друга.

Им нужен общий маршрутизатор, который видят оба; обычно третья машина с 2 IP, скажем 10.0.3.254 и 10.0.4.254, которая имеет некоторые возможности маршрутизации - под Linux будет достаточно выполнения echo 1> / proc / sys / net / ipv4 / ip_forward для базовых вещей.

Затем вам нужно будет объявить свой маршрутизатор как таковой на каждой машине с route или ip route на машине 10.0.3.1:

route add -net 10.0.4.0 netmask 255.255.255.0 gw 10.0.3.254

И наоборот на машине 10.0.4.1:

route add -net 10.0.3.0 netmask 255.255.255.0 gw 10.0.4.254

Поскольку вы используете контейнеры, хост контейнера должен действовать как маршрутизатор между контейнерами и внешним миром. Поэтому активируйте на нем переадресацию ip и добавьте правильные маршруты для контейнеров и на машины, с которых вы хотите получить доступ к контейнеру.

6
26.05.2018, 08:27
1 ответ

Lo siguiente usa la prueba -ode bashpara probar si la opción de shell pipefailestá configurada o no (esto funciona en [[... ]]y con el comando testintegrado -, pero no con[... ]). Si la opción no está configurada, la configura e instala una trampa que la desactivará cuando la función regrese:

foo () {
    if [[ ! -o pipefail ]]; then
        set -o pipefail
        trap 'set +o pipefail' RETURN
    fi

    # rest of function body
}

Código con algo de depuración incluida:

foo () {
    if [[ ! -o pipefail ]]; then
        set -o pipefail
        trap 'set +o pipefail' RETURN
    fi

    # rest of function body
    if [[ -o pipefail ]]; then
        echo 'pipefail is set (in function)'
    else
        echo 'pipefail is not set (in function)'
    fi
}

if [[ -o pipefail ]]; then
    echo 'pipefail is set'
else
    echo 'pipefail is not set'
fi

foo

if [[ -o pipefail ]]; then
    echo 'pipefail is set'
else
    echo 'pipefail is not set'
fi

Ejecutarlo:

$ bash script.sh
pipefail is not set
pipefail is set (in function)
pipefail is not set

$ bash -o pipefail script.sh
pipefail is set
pipefail is set (in function)
pipefail is set
2
27.01.2020, 20:21

Теги

Похожие вопросы