Добавление вывода команды в цикл for

Я думаю, вы можете достичь этого с помощью HAProxy.

  • Установите его на прослушивание порта 7070/tcp в режиме httpd.
  • измените заголовок host с помощью haproxy replace-value. В вашем случае это может выглядеть так:

    http-request replace-value Host mydmz.server.com:(.*) liveupdate.symantecliveupdate.com:\1
    
  • разделите URI с помощью haproxy url rewriting. В вашем случае это может быть что-то вроде:

    reqrep ^([^\ ]*\ /)clu-prod[/]?(.*) \1\2
    

С этими настройками ваша конфигурация HAProxy может выглядеть примерно так (это быстрая модификация конфигурации HAProxy по умолчанию в CentOS 7, это не тщательно проверено):

    global
   log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend  main *:7070
    default_backend             app

backend app
    http-request replace-value Host mydmz.server.com:(.*) liveupdate.symantecliveupdate.com:\2
    reqrep ^(.*)/clu-prod(.*) \1/\2
    balance     roundrobin
    server  app1 liveupdate.symantecliveupdate.com:80 check

Другой вариант, который вы могли бы использовать - squid proxy http://www. squid-cache.org/

2
23.05.2017, 15:39
2 ответа

У вас есть два варианта, чтобы получить желаемый результат:

for k in /path/to/*.txt; do
    some_command -i "$k" >> /path/to/output.txt
done

ИЛИ

for k in /path/to/*.txt; do
    some_command -i "$k"
done >> /path/to/output.txt

Если ваша программа не выполняет запись в стандартный вывод, а только записывает в файл, указанный с помощью -o , вы можете сделать это:

for k in /path/to/*.txt; do
    some_command -i "$k" -o /tmp/output.txt
    cat /tmp/output.txt >> /path/to/real_output.txt
done
rm /tmp/output.txt
4
27.01.2020, 22:11

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

Спасибо

0
27.01.2020, 22:11

Теги

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