2010-10-26 3 views
1

J'ai besoin d'un outil qui me permet d'analyser un fichier de configuration et d'en demander des données.Un outil pour analyser facilement un fichier de configuration sur Linux?

Le format du fichier de configuration est libre (il peut être INI, XML, etc.) mais plus c'est humain, mieux c'est.

Voici un fichier de configuration de l'échantillon (en utilisant XML, mais il pourrait être quelque chose: je ne me dérange pas le format):

<?xml version="1.0" encoding="UTF-8" ?> 
<configuration> 
    <name>Some name</name> 
    <description>Some description</description> 
</configuration> 

L'utilisation de l'outil doit être quelque chose comme:

[[email protected] ~]$ the_tool config.xml "string(/configuration/name)" 
Some name 
[[email protected] ~]$ the_tool config.xml "string(/configuration/description)" 
Some description 

Connaissez-vous un outil Linux capable de faire cela?

Répondre

4

Vous pouvez le faire avec python (fichiers de configuration .ini-Style): http://docs.python.org/library/configparser.html

EDIT: Vous pouvez simplement utiliser sed avec des expressions rationnelles aussi (mais oublier le "facilement" puis, si vous re pas connu un peu avec sed: P).

2

Un style simple format de configuration (variable = valeur, une par ligne) est facilement analysable avec grep et coupe.

Par exemple fichier config.conf:

name=Some Name 
description=Some Description 

ensuite pour obtenir une valeur spécifique:

# grep "^name=" config.conf | cut -d= -f2 
Some Name 
# grep "^description=" config.conf | cut -d= -f2 
Some Description 

Il est facile et pas cher (ne nécessite pas de binaires supplémentaires à installer comme grep et couper sont standard sur n'importe quel Linux ...).

Vous pouvez aussi écrire simple wrapper script bash si vous voulez une seule commande pour fournir la valeur dont vous avez besoin:

#!/bin/bash 

CONFIG_PATH=/path/to/config.conf 

if [ ! -e $CONFIG_PATH ]; then 
    echo "$CONFIG_PATH not found" 
    exit 1 
fi 

if [ $# -ne 1 ]; then 
    echo "Syntax: $0 \"<variable name>\"" 
    exit 1 
else 
    VARNAME="$1" 
    eval "grep \"^$VARNAME=\" $CONFIG_PATH | cut -d= -f2" 
fi 

Ensuite, tout ce que vous devez faire est d'appeler comme ceci:

# yourscript.sh variable_name

Questions connexes