IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Bash et fichiers


Sujet :

Linux

  1. #1
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut Bash et fichiers
    Bonjour,
    Je veux chercher dans le httpd.conf de mon apache la clause

    <VirtualHost monip>
    ...
    ServerName XXXXXX.YYY
    ...
    </VirtualHost>
    ma recherche tiendra seulement sur ServerName XXXXXX.YYY, une fois que j'ai trouvé la ligne je supprime toute la clause du fichier.
    Comment je pourrais faire ca, et quelle est la methode la plus optimisée.
    merci d'avance.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     grep -p"<Vir" "MonIP"
    ou si chaque paragraphe <Virtuel ......> sont bien separer par un saut de ligne

    donc un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    grep -v -p "MonIP" httpd.conf > httpd.new
    mv httpd.new httpd.conf
    devrait être bon
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  3. #3
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    [root@dotproject cron]# grep -p "213.150" vhosts.conf
    grep: option invalide -- p
    :

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    l'option -p (sur mon AIX 5.1 permet d'extraire le paragraph ou le pattern est trouver regarde le man sur ta machine y devrait y avoir l'equivalent (ou peut etre egrep , fgrep ?), j'ai deja utiliser sous linux me semble t il
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  5. #5
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    non g pa trouvé, jvais faire une petite recherche sur ca.
    sinon y'a -n qui fait :
    [root@dotproject cron]# grep -n "213" vhosts.conf
    2: <VirtualHost 213.150.66.35>
    jpourrais extraire le numéro de la ligne avant les :

  6. #6
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    Voila maintenant j'ai les numéros de lignes du debut de la clause à la fin de la clause :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ligne_debut=`grep -n "#BEGIN:${res[2]}:${res[0]}" vhosts.conf | cut -d ':' -f1,1`
     ligne_fin=`grep -n "#END:${res[2]}:${res[0]}" vhosts.conf | cut -d ':' -f1,1`
    sachant que ma clause est de la forme :
    #BEGIN:site2asu:site2asup.com
    <VirtualHost 213.150.66.35>
    #CreationInternalAction_ID=95
    #CreationDate=mar jun 29 12:55:25 CET 2004
    ServerAdmin info@hexabyte.tn
    DocumentRoot /home/httpd/site2asup.com/html
    ErrorLog /home/httpd/site2asup.com/log/site2asup.com.error_log
    CustomLog /home/httpd/site2asup.com/log/site2asup.com.access_log
    ScriptAlias /cgi-bin/ /home/httpd/site2asup.com/html/cgi-bin/
    ServerName site2asup.com
    <Directory /home/httpd/site2asup.com/html/stats>
    Options Indexes FollowSymLinks Multiviews
    AllowOverride AuthConfig
    </Directory>
    </VirtualHost>
    #END:site2asu:site2asup.com
    maintenant je veux seulement commenter la clause et ne pas l'effacer.
    donc en fin du traitement la clause sera comme ca :
    #BEGIN:site2asu:site2asup.com
    # <VirtualHost 213.150.66.35>
    # #CreationInternalAction_ID=95
    # #CreationDate=mar jun 29 12:55:25 CET 2004
    # ServerAdmin info@hexabyte.tn
    # DocumentRoot /home/httpd/site2asup.com/html
    # ErrorLog /home/httpd/site2asup.com/log/site2asup.com.error_log
    # CustomLog /home/httpd/site2asup.com/log/site2asup.com.access_log
    # ScriptAlias /cgi-bin/ /home/httpd/site2asup.com/html/cgi-bin/
    # ServerName site2asup.com
    # <Directory /home/httpd/site2asup.com/html/stats>
    # Options Indexes FollowSymLinks Multiviews
    # AllowOverride AuthConfig
    # </Directory>
    # </VirtualHost>
    #END:site2asu:site2asup.com
    comment je pourrais le faire ?

  7. #7
    Futur Membre du Club
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    ben en fait je proposerais bien :

    nedit (ou kedit ou tout autre) /chemin d'accès/httpd.conf

    et puis commenter et sauvegarder...


    si c'est vraiment bête, je mais qu'on m'explique pourquoi (j'ai fait ça sur ma machine...)
    La théorie, c'est quand on sait comment ça marche, mais que ça marche pas.
    La pratique, on sait pas comment ça marche, mais en tout cas, ça marche.
    Souvent, théorie et pratique se confondent : ça marche pas, et on sait pas pourquoi.

  8. #8
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    LeChip c'est un script qui marche en cron et non interactif

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    je fairais plutot une boucle while ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    mon_ip=$1
    typeset -i flag=0
    while read ligne
    do
    set $ligne
    if  (( flag == 1 ))  # on commante
    then
       echo "# $ligne"
    else
       if $( echo $ligne | grep -q "$mon_ip" )   # ligne trouver la permiere a commanter
       then
          echo "# $ligne" >> httpd.new
          flag=1 
       else
           echo "$ligne" >> httpd.new
       fi
    fi
     
    if ((  $(echo $ligne | grep -q  "</VirtualHost>") && flag == 1 )) ##  fin de paragraphe
       flag=0
    fi
    done < httpd.conf
    a tester et corriger mais l'idée doit être la, enfin mon idée y a surement moyen de faire autrement .....
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  10. #10
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    Voila c'est resolu, en bas j'ai attaché la soluce, en fait je ne connaissais pas le truc du while read ligne et < vhosts.conf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/bin/bash
    stty -echo
    dedans=0
    while read ligne
    do
     if [ "$ligne" = "#BEGIN:kalam:site3anonc.com" ];then
      ligne="$ligne [SUP $date]"
      dedans=1
     fi
     if [ "$ligne" = "#END:kalam:site3anonc.com" ];then
      dedans=0
     fi
     
     if [ $dedans = 0 ];then
      echo "$ligne" > vhosts.new
     else
      echo "#$ligne" > vhosts.new
     fi
    done < vhosts.conf
     
    stty echo
    p.s: oops g oublié le grand merci que je vous dois :o 8)

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    utilise plutot la "nouvelle" syntaxe (shell posix)
    pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if [ "$ligne" = "#BEGIN:kalam:site3anonc.com" ];then 
    devient
    if [[ "$ligne" = "#BEGIN:kalam:site3anonc.com" ]];then
    celle-ci permet les operation logique dans le [[ ((condition) || (condition)) && (condition) ]]
    idem mais pour les test numerique
    (( condition ...... ))
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  12. #12
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ "$temp3" -eq 0 ] && [ "$count_login" -gt 0 ];then #si l'utilisateur et la base de donnees existent
    et ca marche impec, y'a d'autres avantages pour que je change ?

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    Avantage, non si ce n'est d'utiliser la syntaxe posix, ce qui dans ton cas devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (( ( $temp3 == 0 ) && ( $count_login > 0) )) ;then #si l'utilisateur et la base de donnees existent
    sous reserve que temp3 et count_login soit des entiers
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/03/2015, 22h35
  2. Commande bash dans fichier sh
    Par pilpoile dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 24/01/2013, 23h14
  3. Script bash de fichiers d'un repertoire
    Par Freedom57 dans le forum Administration système
    Réponses: 2
    Dernier message: 21/09/2011, 15h17
  4. Réponses: 2
    Dernier message: 13/05/2009, 11h06
  5. Probleme script bash - redirection fichier..
    Par origan31 dans le forum Linux
    Réponses: 1
    Dernier message: 25/08/2007, 19h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo