Найти и заменить на sed с использованием подстановочного знака как при поиске, так и при замене

Ваше решение - использовать iptables для определения правил NAT.

В качестве примеров я буду ссылаться на $ physicalServerIP, который является локальным IP, и $ publicIP для вашего общедоступного IP.

Чтобы перенаправить Tomcat (предполагается на $ physicalServerIP), чтобы его попытки подключиться к серверу на порту 8081 фактически отправлялись на сервер на порту 8082:

iptables -t nat -A PREROUTING -p tcp -s $physicalServerIP --dport 8081 -j REDIRECT --to-port 8082

Входящие запросы, поступающие на $ publicIP на порт 8082, могут быть отправлено на $ physicalServerIP на порт 8081:

iptables -t nat -A PREROUTING -d $publicIP -p tcp -m tcp --dport 8082 -j DNAT --to-destination $physicalServerIP:8081

Чтобы завершить предыдущий NAT, направьте пакеты от $ physicalServerIP для отправки (обратно) через NAT на общедоступном интерфейсе:

iptables -t nat -A POSTROUTING -s $physicalServerIP/32 -j SNAT --to-source $publicIP

Имея в виду этот подход, если вы хотите Вся локальная сеть должна проходить через NAT, вы можете изменить 32 с предыдущей команды на 24 , если ваша локальная сеть - $ physicalServerIP / 24.

1
30.03.2017, 00:24
1 ответ

Уберите ( и ищите не ). Используйте \1, чтобы сохранить совпадающую группировку.

sed 's/a\(([^)]*\))/a\1_mynewstring)/g' file1

Получается:

a(bc_mynewstring)
a(l_mynewstring)
a(d_mynewstring)
a(loke_mynewstring)
a(babab_mynewstring)
a(h323_mynewstring)
3
27.01.2020, 23:34

Теги

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