Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/09/2007, à 11:00

eboucher72

aide pour ecriture de script shel

Bonjour,

Je souhaite ecrire un script shell sous UNIX

Le but de ce script est de parser tous les fichiers html d'un repertoire
De chercher dans ces fichiers s'il existe des liens sur des pages HTML puis de changer ces liens.

Les chaines recherchées dans les fichiers sont du style :

<td colspan="7"><a class="link" href="http://10.28.2.101:5483/lan_tester/report/2_index_unitaryping.html" target=_top>Link to tester Report File </a>

<td colspan="8"><a class="link" href="http://10.28.2.96:80/voip_tester/report/1_index_UC-A1.html" target=_top>Link to tester Report File </a>

En fait il est aisé de constater que l'adresse IP peut etre differente ainsi que le nom du testeur (lan_tester ou voip_tester)

Donc comment faire pour remplacer toutes les chaines dans un fichier HTML qui sont du style :
href="http://10.28.2.101:5483/lan_tester" par href="http://./report"


Voici le debut de mon script :

#!/bin/bash


CURRENT_DIR=`pwd`
DEPLOY_DIRECTORY=$CURRENT_DIR/TesterReports
TESTER_LIST=`ls $PRJ/output/Reports`


# Display name of all testers
#echo $TESTER_LIST

# Suppress old Deployment Directory
if [ -d $DEPLOY_DIRECTORY ];then
    echo "$DEPLOY_DIRECTORY already exists"
    echo "Suppress old $DEPLOY_DIRECTORY"
    rm -Rf $DEPLOY_DIRECTORY
fi


#Create Deployment directory
echo "Create directory $DEPLOY_DIRECTORY"
mkdir $DEPLOY_DIRECTORY


for Tester in $TESTER_LIST
do
    # Check if file report.tar exists
    if [ -f $PRJ/output/Reports/$Tester/report.tar ];then
        echo "$PRJ/output/Reports/$Tester/report.tar is found"
           
        # Suppress old Directory of tester
        if [ -d $DEPLOY_DIRECTORY/$Tester ];then
            echo "$DEPLOY_DIRECTORY/$Tester already exists"
            echo "Suppress old $DEPLOY_DIRECTORY/$Tester"
            rm -Rf $DEPLOY_DIRECTORY/$Tester
        fi
           
        # Create directory
        echo "Create Directory $DEPLOY_DIRECTORY/$Tester"
        mkdir $DEPLOY_DIRECTORY/$Tester
           
        # Copy Tester Report to directory
        echo "Copy file $PRJ/output/Reports/$Tester/report.tar in $DEPLOY_DIRECTORY/$Tester"
        cp $PRJ/output/Reports/$Tester/report.tar $DEPLOY_DIRECTORY/$Tester

        # Uncompress tar file
        echo "Uncompress file $DEPLOY_DIRECTORY/$Tester/report.tar"
        cd $DEPLOY_DIRECTORY/$Tester
        tar -xvf $DEPLOY_DIRECTORY/$Tester/report.tar

        # For each html file, replace string "http://ww.xx.yy.zz:port/tester_name/report" by "http://tester_name"
        HTML_LIST=`ls $DEPLOY_DIRECTORY/$Tester/*.html`
        for HTML_FILE in $HTML_LIST
        do
            echo "Change reference link in $HTML_FILE"
 
        done
    fi
done



Merci de m'apporter des elements de reponse car je bloque sur ce point la

Hors ligne

#2 Le 12/09/2007, à 12:19

alexduf

Re : aide pour ecriture de script shel

et sinon un

sed s/href=\"http://10.28.2.101:5483/lan_tester\"/href=\"http://./report\"/g *.html

ca marche pas?

(pas testé hein... c'est pas dis que ca marche du premier coup)


Par contre je comprend pas du tout ton script là... il sert à quelquechose? je ne vois aucun rapport avec le remplacement de chaines dans du html en tout cas.

Dernière modification par alexduf (Le 12/09/2007, à 12:22)

Hors ligne

#3 Le 12/09/2007, à 13:32

eboucher72

Re : aide pour ecriture de script shel

bonjour alexduf,

Merci d'avoir repondu j'avais deja penser a utiliser SED mais le souci est que dans mes fichiers HTML l'adresse IP et le numero de port peuvent variés.

Donc je souhaiterai bien utilisé SED mais je voi spas comment traduire l'adresse IP et le numero de port, ainsi que le nom du repertoire juste derriere en expression reguliere afin que cela marche toujours quelque soit l'adresse IP presente dans les fichiers.

Le but de ce script est de recuperer a un endroit donné des fichiers compresses (tar file) qui contiennent des rapports de tests recuperés sur differents serveurs. Puis de tous les decompresser en local sur un PC, et de remplacer les liens faisant reference a d'autre page HTML pour pouvoir les visualiser en local sur ma machine

Donc pour resumer :
Comment se traduit en expression reguliere une chaine du type http://10.28.2.101:5483/lan_tester dans laquelle l'adresse IP, le numero de port et le nom du repertoire peuvent differents d'une fois sur l'autre ?

Merci d'avance pour l'aide apportée

Hors ligne

#4 Le 12/09/2007, à 13:57

alexduf

Re : aide pour ecriture de script shel

Donc c'est pour par la suite consulter du html en local?

est-ce que remplacer http://10.28.2.101:5483/lan_tester par file:///home/tonlogin/blabla/lan_tester te conviendrais?

Hors ligne

#5 Le 12/09/2007, à 14:15

eboucher72

Re : aide pour ecriture de script shel

Alexduf,

Oui c'est tout a fait ce que je veux faire, pouvoir consulter du HTML en local sur ma machine

Et remplacer des chaines du style http://10.28.2.101:5483/lan_tester ou http://10.28.3.102:5483/lan_tester par file:///home/tonlogin/blabla/lan_tester  me conviendrait parfaitement

Tout en sachant que les adresses IP ne sont pas figées et peuvent changer a tout moment.

Merci d'avance a toi

Hors ligne

#6 Le 12/09/2007, à 19:08

Yannick_LM

Re : aide pour ecriture de script shel

sed -i.back -e 's/href="http:\/\/\(.*\)\/\(.*\)\/report/href="http:\/\/.\/report/' leFichier

C'est moche mais ça marche.

<td colspan="7"><a class="link" href="http://10.28.2.101:5483/lan_tester/report/2_index_unitaryping.html" target=_top>Link to tester Report File </a>

<td colspan="8"><a class="link" href="http://10.28.2.96:80/voip_tester/report/1_index_UC-A1.html" target=_top>Link to tester Report File </a>

devient

<td colspan="7"><a class="link" href="http://./report/2_index_unitaryping.html" target=_top>Link to tester Report File </a>

<td colspan="8"><a class="link" href="http://./report/1_index_UC-A1.html" target=_top>Link to tester Report File </a>

EDIT : On devrait éviter de répondre à des messages comme ça dans un cyber.

(J'ai plus beaucoup de temps ...)

Dernière modification par Yannick_LM (Le 12/09/2007, à 19:09)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#7 Le 12/09/2007, à 19:57

HymnToLife

Re : aide pour ecriture de script shel

J'ai mieux :

sed -e '/http/s/[0-9.][0-9.]*:[0-9]*/\./g' monFichier

Ne marche pas à tousles coups par contre, il faut qu'il y ait un : dans l'IP.

Dernière modification par HymnToLife (Le 12/09/2007, à 20:02)


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#8 Le 13/09/2007, à 08:30

eboucher72

Re : aide pour ecriture de script shel

Merci a vous deux hymnToLife et Yannick_LM pour le support que vous m'avez fourni
Je regarde cela dans la journée et je vous tiens au courant.
Bonne journée a tous

Hors ligne

#9 Le 13/09/2007, à 12:04

Yannick_LM

Re : aide pour ecriture de script shel

@HTL : Bien vu ...


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne