none
Alterar arquivo TXT com base em outro arquivo. RRS feed

  • Pergunta

  • Pessoal seguinte...

    Eu tenho que instalar uma aplicação em mais de 100 servidores. O instalador dEssa aplicação é um arquivo MSI que tem parametros diversos. Porem, o local onde está o arquivo MSI, tem um arquivo com a extensao .cfg (arquivoconfig.cfg) que o programa MSI usa na hora da instalação. Cada servidor que eu for instalar, tenho que alterar determinados parametros.

    Tenho um arquivo CSV com a seguinte estrutura:

    Servidor,Config1,Config2 (cabeçaçho)

    HOSTNAME1, CONFIG1, CONFIG2

    HOSTNAME2, CONFIG1, CONFIG2

    HOSTNAME3, CONFIG1, CONFIG2

    Esses "Configs" citados acima sao valores DIFERENTES que devem ser unicos em cada servidor.

    O arquivo de configuração .cfg (arquivoconfig.cfg) tem varias linhas com configurações, e uma das linhas tem:

    CONFIG1=

    CONFIG2=

    Precisaria alterar esses configs de acordo com o arquivo BASE que contém no nome dos servidores e as respectivas configurações. Por isso, eu tenho que no script verificar o HOSTNAME da maquina que está executando, e bater essa informaçaõ com o arquivo BASE para saber a config que deve ser alterada.

    EX: Se eu rodar o script no servidor HOSTNAME1, ele vai ler o arquivo base, e colocar as configs necessarias para o hostname1.

    Sera que alguem pode ajudar?

     


    Albert Alberico dos Santos

    sexta-feira, 26 de setembro de 2014 00:10

Respostas

  • Albert,

    Use alguma função de REPLACE antes de iniciar a instalação.

    Você não disse qual linguagem você está usando mas em termos de dificuldade acho que .BAT > VBScript > PowerShell.

    Veja como é simples em PowerShell.

    $MaquinaAtual = "HOSTNAME1"
    $Dados_Config = "C:\teste\configs.csv"
    
    #PEGA DADOS DA MAQUINA ATUAL
    $config1 = (Import-Csv $Dados_Config | ?{$_.Servidor -eq $MaquinaAtual}).config1
    $config2 = (Import-Csv $Dados_Config | ?{$_.Servidor -eq $MaquinaAtual}).config2
    
    
    #Modifica arquivo
    $Arquivo_Config = "C:\TESTE\arquivoconfig.cfg"
    (Get-Content $Arquivo_Config) | % { $_ -replace "CONFIG1=", "CONFIG1=$config1" } | Set-Content $Arquivo_Config
    (Get-Content $Arquivo_Config) | % { $_ -replace "CONFIG2=", "CONFIG2=$config2" } | Set-Content $Arquivo_Config

    1) Primeiro eu leio aquele arquivo que contém os configs dos servidores(configs.csv) e faço o filtro pra pegar apenas os dados do servidor atual (usei hostname1 como exemplo)

    2) as ultimas linhas fazem o replace.

    Observações

    1-O ideal é que você mantivesse um arquivoconfig.cfg intocavel e quando desse o replace criasse um arquivo novo ao invés de modificar o original.


    Fábio de Paula Junior


    sexta-feira, 26 de setembro de 2014 18:48
    Moderador

Todas as Respostas

  • Help... pls

    Albert Alberico dos Santos

    sexta-feira, 26 de setembro de 2014 12:37
  • Albert,

    Use alguma função de REPLACE antes de iniciar a instalação.

    Você não disse qual linguagem você está usando mas em termos de dificuldade acho que .BAT > VBScript > PowerShell.

    Veja como é simples em PowerShell.

    $MaquinaAtual = "HOSTNAME1"
    $Dados_Config = "C:\teste\configs.csv"
    
    #PEGA DADOS DA MAQUINA ATUAL
    $config1 = (Import-Csv $Dados_Config | ?{$_.Servidor -eq $MaquinaAtual}).config1
    $config2 = (Import-Csv $Dados_Config | ?{$_.Servidor -eq $MaquinaAtual}).config2
    
    
    #Modifica arquivo
    $Arquivo_Config = "C:\TESTE\arquivoconfig.cfg"
    (Get-Content $Arquivo_Config) | % { $_ -replace "CONFIG1=", "CONFIG1=$config1" } | Set-Content $Arquivo_Config
    (Get-Content $Arquivo_Config) | % { $_ -replace "CONFIG2=", "CONFIG2=$config2" } | Set-Content $Arquivo_Config

    1) Primeiro eu leio aquele arquivo que contém os configs dos servidores(configs.csv) e faço o filtro pra pegar apenas os dados do servidor atual (usei hostname1 como exemplo)

    2) as ultimas linhas fazem o replace.

    Observações

    1-O ideal é que você mantivesse um arquivoconfig.cfg intocavel e quando desse o replace criasse um arquivo novo ao invés de modificar o original.


    Fábio de Paula Junior


    sexta-feira, 26 de setembro de 2014 18:48
    Moderador