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"; } }
|