sed и awk могут взять в нескольких файлах?

Наконец-то нашли решение или обходной путь. Я не знаю, что вызвало это (это связано с каким-то Proxmox или фриволлом Debian или чем-то вроде того), моя старая установка с простым OpenVZ сработала отлично.

Проблема в том, что при использовании сервисов на ВМ А с другой ВМ Б на том же сервере (тот же самый внешний IP). Если я использовал прокси на другом сервере, все прошло хорошо, потому что IP другого прокси отличается от IP сервера.

Так что просто не позволяйте вызову службы выйти за пределы сервера. Я настраиваю службу DNS на сервере с помощью dsnmasq. Вызов с ВМ В теперь попадает в DNS на сервере и получает IP ВМ А. Не забудьте установить сервер имён для каждой ВМ на локальный сервер!

Это решение имеет дополнительное преимущество в том, что определенная скорость достигается за счет кэширования всех вызовов DNS от ВМ на сервере.


Подробные инструкции:

Установите dnsmasq на сервер

# apt-get install dnsmasq
# update-rc.d dnsmasq enable

настройте dnsmasq на работу в качестве DNS-сервера и кэшируйте:

# cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
# vi /etc/dnsmasq.conf

не комментируйте следующие строки:

domain-needed
bogus-priv

Скажите ему, чтобы он прослушивал внутренний IP самого сервера:

listen-address=10.0.186.254   # internal IP
listen-address=127.0.0.1      # must be added too

добавьте localhost в качестве сервера имён:

# vi /etc/resolv.conf

search mydomain.com
nameserver 127.0.0.1    # this line added
nameserver 8.8.8.8

добавьте записи для доменов, которые должны быть маршрутизированы к вашему локальному прокси-серверу (10. 0.186.1) или VM:

# vi /etc/hosts

10.0.186.1 api.mydomain.com           # these all point to the proxy 
10.0.186.1 loginservice.mydomain.com
10.0.186.1 api.otherdomain.com

Не забудьте перезапустить dnsmasq после изменения /etc/hosts

# service dnsmasq restart

Убедитесь, что вы добавили 127.0.0.1 в качестве (первичного) сервера имён ко всем VM в веб-интерфейсе Proxmox!

-2
31.08.2014, 04:24
2 ответа

, если вы хотите сделать это простым способом, попытайтесь использовать его наряду с цикл foreach

foreach var (`ls directory_path`)
sed -i '/../.../ ' $var
awk '{ #commands to be run }' $var 
end
0
28.01.2020, 05:16

из awk FAQ:

16. Как awk работает с несколькими файлами?
:

16. ...
16.2 Как я могу прочитать несколько файлов?
это автоматически (по крайней мере, под Unix) -- используйте что-нибудь вроде:
awk '/^#include/ {print $2}' *.c *.h

Awk будет читать из переданных ему файлов аргументы последовательно, т.е. заполнять один перед переходом к следующему. Имя читаемого в данный момент файла хранится как FILENAME.

Это может быть особенно полезно, когда вы хотите сравнить содержимое более чем одного файла построчно (запись за записью): как, например, в этом вопросе.

См. полное объяснение в руководстве по чтению файлов .

2
28.01.2020, 05:16

Теги

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