Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SOLVED] Piccolo script per splittare le configurazioni
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano
View previous topic :: View next topic  
Author Message
koma
Advocate
Advocate


Joined: 06 Jun 2003
Posts: 2702
Location: Italy

PostPosted: Mon Nov 22, 2010 12:44 pm    Post subject: [SOLVED] Piccolo script per splittare le configurazioni Reply with quote

Ciao!, Avrei bisgno di una dritta per scriptare una piccola configurazione
Cioè,
ho un file di circa 25000 righe contenenti le configurazioni vhost di un server web.
Per semplificarmi la vita voglio avere un file vhost per ogni sito quindi, devo "tagliare" il file attuale in tanti piccoli file:
esempio:
Code:

<VirtualHost *>
DocumentRoot /usr/local/www/apache22/data/sito1
php_admin_value open_basedir /usr/local/www/apache22/data/sito1
php_admin_value upload_tmp_dir /usr/local/www/apache22/data/sito1/tmp
DirectoryIndex index.html
ServerName www.sito1.it
CustomLog /usr/local/www/log/sito1.access_log  combined
</VirtualHost>

<VirtualHost *>
DocumentRoot /usr/local/www/apache22/data/sito2.com
php_admin_value open_basedir /usr/local/www/apache22/data/sito2.com
php_admin_value upload_tmp_dir /usr/local/www/apache22/data/sito2.com/tmp
ServerName www.sito2.com
CustomLog /usr/local/www/log/sito2.com.access_log  combined
</VirtualHost>

Dovranno doventare due file
Code:

<VirtualHost *>
DocumentRoot /usr/local/www/apache22/data/sito1
php_admin_value open_basedir /usr/local/www/apache22/data/sito1
php_admin_value upload_tmp_dir /usr/local/www/apache22/data/sito1/tmp
DirectoryIndex index.html
ServerName www.sito1.it
CustomLog /usr/local/www/log/sito1.access_log  combined
</VirtualHost>
Code:

<VirtualHost *>
DocumentRoot /usr/local/www/apache22/data/sito2.com
php_admin_value open_basedir /usr/local/www/apache22/data/sito2.com
php_admin_value upload_tmp_dir /usr/local/www/apache22/data/sito2.com/tmp
ServerName www.sito2.com
CustomLog /usr/local/www/log/sito2.com.access_log  combined
</VirtualHost>
questo però per circa 5000 siti.

Ora, l'idea sarebbe usare <VirtualHost *></VirtualHost> come delimitatori.

Qualcuno ha un'idea?
_________________
http://www.youtube.com/watch?v=_yoJI-Tl94g GLORY GLORY HYPNOTOAD


Last edited by koma on Mon Nov 22, 2010 1:41 pm; edited 1 time in total
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4808
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Mon Nov 22, 2010 1:22 pm    Post subject: Reply with quote

può essere?
Code:

cloc3@netlive-100 ~/prova $ cat splitta.sh
#!/bin/bash
IFS="
"
n=0
for i in `<$1`;do {
   echo $i >>${1%\.*}_${n}.txt
   echo $i|grep -sq ^"</VirtualHost>" && n=$(( $n+1 ))
}
done

uso:
Code:

 ./splitta.sh vHost.txt

_________________
vu vu vu
gentù
mi piaci tu
Back to top
View user's profile Send private message
koma
Advocate
Advocate


Joined: 06 Jun 2003
Posts: 2702
Location: Italy

PostPosted: Mon Nov 22, 2010 1:38 pm    Post subject: Reply with quote

Me lo hanno fatto addirittura in php :D
Figata :D[/quote]
Code:
<?php
$righe = file('vhost.txt');
$trovato = false;
$inizio = '<VirtualHost *>';
$name = 'ServerName';
foreach($righe as $riga) {

        if(substr($riga, 0, strlen($inizio)) == $inizio) {
                $i++;
        }
        if(trim($riga) != '') { $host[$i][] = $riga; }
}
foreach($host as $h) {
        $nome = false;
        foreach($h as $v) {
                if(substr($v, 0, strlen($name)) == $name) {
                        $nomehost = str_replace("www.", "", trim(substr($v, strlen($name))));
                        $format[$nomehost] = $h;
                        $nome = true;
                }
                if($nome) break;
        }
}

foreach($format as $nomefile => $contenuto) {

        @unlink($nomefile.'.vhost');
}
foreach($format as $nomefile => $contenuto) {

        $fp = fopen($nomefile.'.vhost', 'a');
        fwrite($fp, implode("\n", $contenuto));

        fclose($fp);
}

?>

_________________
http://www.youtube.com/watch?v=_yoJI-Tl94g GLORY GLORY HYPNOTOAD
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4808
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Mon Nov 22, 2010 1:49 pm    Post subject: Reply with quote

koma wrote:
Me lo hanno fatto addirittura in php :D
Figata :D

:?: :?: :?:

c' è un premio per chi supera le 30 righe di codice?
e se si usa c#?
_________________
vu vu vu
gentù
mi piaci tu
Back to top
View user's profile Send private message
koma
Advocate
Advocate


Joined: 06 Jun 2003
Posts: 2702
Location: Italy

PostPosted: Mon Nov 22, 2010 2:51 pm    Post subject: Reply with quote

Beh dai è meno criptico :D
_________________
http://www.youtube.com/watch?v=_yoJI-Tl94g GLORY GLORY HYPNOTOAD
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4808
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Mon Nov 22, 2010 9:18 pm    Post subject: Reply with quote

koma wrote:
Beh dai è meno criptico :D



    $righe
    $trovato
    $inizio
    $name
    $host
    $nome
    $nomefile
    $contenuto
    $format
    $h
    @unlink
    file
    foreach
    as
    if
    substr
    strlen
    str_replace
    trim
    break
    fopen
    fwrite
    implode
    fclose



allora. secondo te, se tu devi comandare a un operaio di spalare del letame buttandolo su una carriola.
e se gli chiedi di cambiare carriola ogni volta che, per caso, gli capita sulla pala un'osso di pollo.

secondo te, se glielo spieghi in php, quello dice:

Figata, è meno criptico! :?:

:lol:
_________________
vu vu vu
gentù
mi piaci tu
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum