Pages : 1
#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