The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
bash vs. httpd.conf, !*! localhorst, 23-Июл-10, 15:16  [смотреть все]
Приветствую.
Есть httpd.conf в котором ~200 виртхостов.
Каждый хост, естественно, с уникальным ServerName.
Нужно как-то придумать на shell и получить либо в массив строк, либо (в крайнем случае) одной строкой виртхост с нужным ServerName, то бишь все, что между <VirtualHost> и </VirtualHost> для этого домена.
У меня идеи кончились, есть догадка, что это легче делать на перле, но тогда надо будет переделывать все остальное - а это лень.
Поделитесь мыслями?)
  • bash vs. httpd.conf, !*! phpcoder, 15:29 , 23-Июл-10 (1)
    sed -n '/^<VirtualHost foo.bar>/,/^<\/VirtualHost>/p' httpd.conf

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


    • bash vs. httpd.conf, !*! localhorst, 15:49 , 23-Июл-10 (2)
      >sed -n '/^<VirtualHost foo.bar>/,/^<\/VirtualHost>/p' httpd.conf
      >
      >Регулярки по вкусу. Не проверял.

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

      • bash vs. httpd.conf, !*! phpcoder, 16:01 , 23-Июл-10 (3)
        >>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'

  • bash vs. httpd.conf, !*! L0n3R4ng3r, 13:12 , 26-Июл-10 (4)
    >Приветствую.
    >Есть 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";
        }
    }




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

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