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

Scripts/Batch Discussion :

Modifier un fichier de configuration


Sujet :

Scripts/Batch

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Modifier un fichier de configuration
    Bonjour,

    Depuis un script en PowerShell, j'aimerai pouvoir apporter des modifications dans un fichier de configuration (sip.conf d'Asterisk)

    J'ai ce fichier en local.

    Le fichier ce présent ainsi :


    ... Du blabla avant ...

    ; ----------------------------
    ; Définition des comptes utilisateurs
    ; ----------------------------

    [0601]
    call-limit=2
    type=friend
    username=0601
    secret=password
    host=dynamic
    context=Telephone
    callerid="Jean"
    mailbox=0601

    [0602]
    call-limit=2
    type=friend
    username=0602
    secret=password
    host=dynamic
    context=Telephone
    callerid="Maxime"
    mailbox=0602

    ... etc...

    ; ----------------------------
    ; Définition des comptes utilisateurs SIP Mobiles
    ; ----------------------------

    ... du blabla après ...
    J'aimerai faire deux choses :

    1. listé toutes les entrées en [xxxx] pour faire par la suite des analyses (exemple : connaitre les N° de téléphones disponibles pouvant être attribués)
    2. pouvoir insérer une entrée dans la section "Définition des comptes utilisateurs" et (se qui serai le top) soit l'ordre numérique.

    Je pensais extraire toute la section dans un tableau pour faciliter le trie et réécrire les données dans le fichier, dans la bonne section (en supprimant les entrées déjà écrite pour ne pas avoir de doublon).

    Je ne sais pas comment procéder... auriez vous des idées ?

    En vous remerciant par avance.

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    J'ai un début de fonction que j'avais déjà utilisé (http://powershell-scripting.com/inde...d=712&catid=14)

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Function Import-Ini
    {
        param ($file)
        $ini = @{}
        $ok = $true
        $commentaire = $true
        switch -regex -file $file
        {
            "^;.*$"
            {
                   $commentaire=$true
            }
            "^\[(.+)\]$"
            {
                    $section = $matches[1]
                    $ini[$section] = @{}
                    $i = 0
            }
            "^([^=]+)={1}([^=]*)$"
            {
                    if ($commentaire -eq $false)
                    {
                        $name, $value = $matches[1..2]
                        $ini[$section][$name.Trim()] = $value.Trim()
                        $ok = $false
                    }
            }
            "^[^\[].*[^\]]$"
            {
                if ($commentaire -eq $false)
                {
                        if ($ok)
                        {
                              $value = $matches[0]
                              $ini[$section][$i] = $value.Trim()
                              $i++
                        }
                }
            }
            default
            {
                $ok = $true
                $commentaire=$false
            }
        }
        Return $ini
    }
    Le truc c'est que cette fonctionne ne me retourne pas d'objet, donc difficile de faire des tries pour la suite. Comment faire ça ?

    Car pour la suite, il me suffira de faire un where-object {$_.section -match "^[0-9]{4}$"} pour récupérer tout mes numéros de téléphone, puis insérer un nouveau N° de téléphone, faire un trie et tout réécrire dans le fichier texte (en ayant au préalable réécrit les paramètres qui ne changent pas)

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Bonjour,

    J'ai réussi à faire quelque chose plutôt bien :

    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
    function Get-IniContent ($filePath)
    {
        switch -regex -file $filePath
        {
            "^\[(.+)\]$"
            {
                $section = $matches[1]
            }
            "(.+)=(.*)"
            {
                $name, $value = $matches[1..2]
                New-Object -TypeName PSObject -Property @{Section = $section
                                        Parametre = $name
                                        Valeur = $value
                                        } | Select Section, Parametre, Valeur
            }
        }
    }
    
    $IniContent = Get-IniContent "sip.conf"
    $IniContent | where { $_.Section -match "^[0-9]{4}$"} | sort-object section, parametre
    J'obtiens donc tout mes numéros de téléphone, classer en ordre alphabétique.

    Maintenant, j'aimerai ajouter des lignes dans cette objet.

    J'ai essayé un add-member, mais j'ai pleins d'erreurs. Je ne sais pas si c'est la meilleur façon de faire.

Discussions similaires

  1. [Python 2.X] Modifier un fichier de configuration .conf
    Par daniel1985 dans le forum Général Python
    Réponses: 7
    Dernier message: 23/09/2016, 16h44
  2. Modifier un fichier de configuration par le code
    Par Nuloprog dans le forum C#
    Réponses: 5
    Dernier message: 30/01/2009, 18h07
  3. Réponses: 3
    Dernier message: 01/09/2008, 15h30
  4. [2.0] Modifier le fichier de configuration
    Par mister3957 dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 15/11/2007, 08h59
  5. Réponses: 3
    Dernier message: 04/02/2006, 09h49

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