The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"bash vs. httpd.conf"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"bash vs. httpd.conf"  +/
Сообщение от localhorst (ok) on 23-Июл-10, 15:16 
Приветствую.
Есть httpd.conf в котором ~200 виртхостов.
Каждый хост, естественно, с уникальным ServerName.
Нужно как-то придумать на shell и получить либо в массив строк, либо (в крайнем случае) одной строкой виртхост с нужным ServerName, то бишь все, что между <VirtualHost> и </VirtualHost> для этого домена.
У меня идеи кончились, есть догадка, что это легче делать на перле, но тогда надо будет переделывать все остальное - а это лень.
Поделитесь мыслями?)
Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "bash vs. httpd.conf"  +/
Сообщение от phpcoder email(ok) on 23-Июл-10, 15:29 
sed -n '/^<VirtualHost foo.bar>/,/^<\/VirtualHost>/p' httpd.conf

Регулярки по вкусу. Не проверял.


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "bash vs. httpd.conf"  +/
Сообщение от localhorst (ok) on 23-Июл-10, 15:49 
>sed -n '/^<VirtualHost foo.bar>/,/^<\/VirtualHost>/p' httpd.conf
>
>Регулярки по вкусу. Не проверял.

<VirtualHost IP:port>
IP у тачки один, вхостов на нем много. Не катит.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "bash vs. httpd.conf"  +/
Сообщение от phpcoder email(ok) on 23-Июл-10, 16:01 
>>sed -n '/^<VirtualHost foo.bar>/,/^<\/VirtualHost>/p' httpd.conf
>>
>>Регулярки по вкусу. Не проверял.
>
><VirtualHost IP:port>
>IP у тачки один, вхостов на нем много. Не катит.

ААаа, вон оно что, Михалыч!

tac tets | sed -n '/NameServer bar/,/<VirtualHost .*>/p' | tac | head -n -1
cat tets | sed -n '/NameServer bar/,/<\/VirtualHost>/p'

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "bash vs. httpd.conf"  +/
Сообщение от L0n3R4ng3r (ok) on 26-Июл-10, 13:12 
>Приветствую.
>Есть httpd.conf в котором ~200 виртхостов.
>Каждый хост, естественно, с уникальным ServerName.
>Нужно как-то придумать на shell и получить либо в массив строк, либо (в крайнем случае) одной строкой виртхост с нужным ServerName, то бишь все, что между <VirtualHost> и </VirtualHost> для этого домена.
>У меня идеи кончились, есть догадка, что это легче делать на перле,
>но тогда надо будет переделывать все остальное - а это лень.
>
>Поделитесь мыслями?)

Вот на перле:

#!/usr/bin/perl

open(CFG,"<path_to_config");
my $virt = 0;
my $server_name;
my %hash;
my @array;

while(<CFG>){
    chomp();
    $_ =~ s/^\s+//g; # удаления всех пробелов/табуляций в начале строки
    if (/<VirtualHost/ or $virt = 1){
        $virt = 1;
        push(@array,$_);
        $server_name = (split(/\s+/,$_))[2] if (/ServerName/);
    }
    if (/<\/VirtualHost/) {
        $virt = 0;
        push(@{$hash{$server_name}},@array);
        my $arr_count = 0;
        foreach (@array){
            delete $array[$arr_count];
            $arr_count++;
        }
    }
}

# здесь просто вывод результата
foreach my $key (sort keys %hash){
    my $tmp_array = $hash{$key};
    print "===========SERVER NAME $key=================\n";
    foreach my $element (@$tmp_array) {
        print "$element\n";
    }
}

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру