IP точки к экземпляру приложения

Это трудно сделать непосредственно потому что script собирает весь вывод на временном терминале и дисплеях, который появляется на том терминале на его собственном стандартном выводе.

В test.sh, у Вас должен быть некоторый способ отличить сообщения, которые Вы хотите на терминале от сообщений, которые Вы только хотите в расшифровке стенограммы. Например, добавьте префикс к каждой строке, указывающей на ее уровень важности. Поскольку другие строки в Вашем примере не запускаются с @, Я просто снабжу префиксом несущественные строки (только для расшифровки стенограммы) @.

rm -v foo.tmp | sed 's/^/@/'
date
pwd

И в сценарии обертки:

script bar.log -c './test.sh | grep -v "^@"'

Я не думаю, что можно сделать намного лучше, не изменяя script утилита. (Если бы Вы хотите пойти тем путем, я думаю, что самый простой метод включил бы несколько строк expect.)

1
05.02.2013, 22:45
1 ответ

IP-адреса не указывают на порты или приложения. Они указывают на (виртуальные) машины, или контейнеры или контексты.

Приложение слушает на порте, который может быть (в зависимости от того, чему оно передает bind) или на всех IP-адресах на машине, или на одном IP-адресе. Таким образом, лучшая вещь сделать состояла бы в том, чтобы добраться, Ваше приложение для вызова связывают с корректным IP. У Вас может быть две различных программы, слушающие на порте 80 (например), пока они слушают на другом IP-адресе. Много программ позволяют Вам указывать IP для слушания на, для того, чтобы иногда использовать синтаксис 10.0.0.1:1234 где 10.0.0.1 IP и 1234 порт. Когда Вы не учитываете IP, они принимают значение по умолчанию к 0.0.0.0, который является всеми адресами на машине.

Если Ваше приложение не может сделать этого, Вы можете — поскольку лютик золотистый подсказал — работают вокруг этого с помощью NAT. В основном у Вас есть каждое приложение, слушают на другом порте, говорят 8080 и 8081. Затем Вы устанавливаете правила NAT для перенаправления порта 80:

iptables -t nat -A PREROUTING -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 8080
iptables -t nat -A PREROUTING -d 10.0.0.2 -p tcp --dport 80 -j DNAT --to-destination 8081

Можно добавить, что дополнительные правила брандмауэра блокируют прямой доступ к портам 8080 и 8081, конечно.

Вы могли также использовать ipvs, чтобы сделать это. Или прокси-сервер. Существует, вероятно, еще несколько путей.

3
27.01.2020, 23:29
  • 1
    Спасибо очень много derobert, это было очень информативно, действительно действительно, ценит его :) –  Conner Stephen McCabe 06.02.2013, 00:57

Теги

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