Две машины в разных (частных) сетях не могут видеть друг друга, если обе не объявили маршруты друг к другу. Например, если у вас есть одна машина с адресом 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 и добавьте правильные маршруты для контейнеров и на машины, с которых вы хотите получить доступ к контейнеру.
Lo siguiente usa la prueba -o
de bash
para probar si la opción de shell pipefail
está configurada o no (esto funciona en [[... ]]
y con el comando test
integrado -, 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