montextealternatif

Expressions Regulieres


Rédigé par admin le Aucun commentairee

Les expressions régulières, ou plus communément "regex" (contraction de regular expression) permettent de d'analyser et de travailler sur des portions de textes.

L'outils est redoutable ...mais trés trés loin .. d'etre conviviale.

A noter qu'on peut le retrouver dans de nombreux langages comme le PHP, MySQL, Javascript...

           

 

Dans cet article, il ne sera pas question de faire une synthese générale (il y a pletore de sites trés bien fait sur le net ), mais plutot de poster ce qui a fonctionné pour moi.
 

Bonne lecture ..

 
 
Les bases  :

- Je vous invite à consulter (entre autre...) les liens suivants pour  se familiariser avec les concepts et la syntaxe : 

- Le minimun à connaitre :

http://www.adviso.ca/blog/2008/07/01/repousser-les-limites-de-google-analytics-les-expressions-regulieres-partie-1/

 

 
- Mon besoin initial   :

Dans le projet de sécurisation de "java" dans notre infrastructure, je devais (entre autre) etudier le moyen de desactiver le RunTime Java, en fonction de l'appartenance ou pas à des groupes AD .

Graphiquement, le parametre se trouve dans "Panneau de Configuration"\"Java (32 bits")\onglet "Java"\"parametre Java RunTime Environnement"


 

Mais ce parametre correspond à l'entrée "deployment.javaws.jre.0.enabled" inclus  le fichier "deployment.properties" LOCAL (Attention, il peut en exister des "Centralisé").

- Emplacement de ce fichier pour un Win7 : C:\Users\NomProfil\AppData\LocalLow\Sun\Java\Deployment\deployment.properties
- Emplacement pour un poste XP :  C:\Documents and Settings\NomProfil\Application Data\Sun\Java\Deployment\deployment.properties

 

Le positionnement à "false" ou "true" , desactive ou active le JRE :

 
 

Probleme : il peut y avoir autant d'entrées que de versions de java installés :

Dans ce cas, le fichier "deployment.properties" va contenir plusieurs references :
               "deployment.javaws.jre.0.enabled"
               "deployment.javaws.jre.1.enabled"
               .....etc

Et si on veut automatiser la tache, donc la scripter, il va falloir tenir compte de cette eventualité.
C'est là qu'intervient les expressions regulieres

 

 
1er pas  :

- Avant tout, il fallait que je comprenne le "passage de variable" avec cette outil : 
  Apres moultes recherches, je suis tombé sur ce lien 
                 

                           

 

 
1ere Tentative  : Expressions Regulieres + outil "sed" :

Le script en lui-même etait fonctionnel ...,MAIS non utilisable.

En effet, l'outil "SED" , lancé depuis un OS Windows (Non GNU/Linux) ne peut pas modifier directement un fichier : il faut passer par un fichier de "transition".

Or, pour une raison que j'ignore, le fait de supprimer puis recréer le fichier local "deployment.properties" induit un comportement erratique dans ce fichier (création de nouvelles entrées "deployment.javaws.jre.0.enabled", des espaces dans le fichier texte, ...).

 

@echo off
set sed=Z:\Java_TestSecure\bin\sed
set PathJava=%USERPROFILE%\Application Data\Sun\Java\Deployment
FOR /f "tokens=*" %%i in ('%sed% -e "s/deployment.javaws.jre.\(0\|1\|2\).enabled=true/deployment.javaws.jre.\1.enabled=false/g" "%PathJava%\deployment.properties"') do @echo %%i  >> "%PathJava%\deployment.properties-temp"
del "%PathJava%\deployment.properties" /f
ren "%PathJava%\deployment.properties-temp" deployment.properties
set sed =
set PathJava =     

 

 
2eme Tentative  : Expressions Regulieres + Powershell :

    PowerShell a une syntaxe differente de "SED", ici pas besoin d'"echapper" certains caracteres.

 

$Destination = "$Env:userprofile\Application Data\Sun\Java\Deployment\deployment.properties"
$content = Get-Content $Destination | foreach { $_ -replace "deployment.javaws.jre.([0-9]).enabled=true", 'deployment.javaws.jre.$1.enabled=false' } 
Set-Content -Path $Destination -Value $content

 

 
Autre Cas  :

 A venir ....

                               

 

                              
 

DClassé dans : Scripting ,Mots clés : aucun

A propos de l'auteur, admin:


Écrire un commentaire