Ferramentas BASH para manipulação de arquivos conf?

Ferramentas BASH para manipulação de arquivos conf?

Gostaria de saber se existem ferramentas para uso em scripts bash que possam facilmente permitir que vocêmanipular(adicionar, remover, atualizar) diretivas dentro de arquivos conf?

por exemplo, fail2ban.conf agrupou diretivas, cada uma em suas próprias seções.

[proftpd]
enabled  = true
port     = ftp,ftp-data,ftps,ftps-data

[postfix]
enabled  = true
port     = smtp,465,submission

enquanto o pagespeed.conf possui diretivas mistas, algumas em suas próprias seções e outras distribuídas por toda parte.

<Location /pagespeed_admin>
        Order allow,deny
        Allow from localhost
        Allow from 127.0.0.1
        SetHandler pagespeed_admin
    </Location>
    <Location /pagespeed_global_admin>
        Order allow,deny
        Allow from localhost
        Allow from 127.0.0.1
        SetHandler pagespeed_global_admin
    </Location>

    ModPagespeedMessageBufferSize 100000
    ModPagespeedStatisticsLogging on
    ModPagespeedEnableCachePurge on
    ModPagespeedPurgeMethod PURGE
    ModPagespeedFileCacheSizeKb 2048000
    ModPagespeedFileCacheCleanIntervalMs 3600000
    ModPagespeedFileCacheInodeLimit 500000

Você entendeu a ideia.

Existem ferramentas que permitem: por exemplo, manipular a diretiva 'enabled' na seção 'proftpd' do fail2ban.conf?

ou manipular a diretiva 'Permitir de' na seção 'Local /pagespeed_admin' do pagespeed.conf?

ou manipular a diretiva 'ModPagespeedMessageBufferSize' na seção 'no particular' do pagespeed.conf?

Obrigado

Responder1

Não, pela simples razão de que existem muitos formatos que um arquivo de configuração pode usar. O melhor que você pode fazer, eu acho, é criar o seu próprio usando ferramentas de processamento de texto.

Pode haver bibliotecas para alguns formatos (JSON, por exemplo), mas os autores de ferramentas são livres para usar qualquer formato que desejarem, portanto uma ferramenta geral não será possível. Apenas para ilustrar o ponto, aqui estão algumas linhas de alguns arquivos conf:

  1. emacs

    ;; Are we running XEmacs or Emacs?
    (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
    
    ;; disable menu bar when running in terminal
    (when (not (display-graphic-p))
      (menu-bar-mode -1))
    
    ;;My libraries, ebib, wordcount etc
    (add-to-list 'load-path "~/.emacs-lisp/")
    
  2. vi

      highlight Normal guibg=grey90
      highlight Cursor guibg=Green guifg=NONE
      highlight lCursor guibg=Cyan guifg=NONE
      highlight NonText guibg=grey80
      highlight Constant gui=NONE guibg=grey95
      highlight Special gui=NONE guibg=grey95
    
  3. matiz

    #---------------------------------------------
    # BACKGROUND AND BORDER
    #---------------------------------------------
    # general panel settings
    rounded = 7
    border_width = 2
    #background_color = #B4B2B2 10
    background_color = #000000 30 
    border_color = #8F0004 0 
    
  4. vlc

    # Trigger button (string)
    #gestures-button=left
    
    [motion] # motion control interface
    
    [oldrc] # Remote control interface
    
    # Show stream position (boolean)
    rc-show-pos=0
    
  5. sshd

    AuthorizedKeysFile  .ssh/authorized_keys
    ChallengeResponseAuthentication no
    UsePAM yes
    

etc etc.

Responder2

Na verdade não, mas você poderia construir algo para um layout de configuração específico. Algo como

sed -E "/\[proftpd]/,/\[/{s/(enabled\s*=\s*).*/\1false/}" input.file

poderia ser projetado como uma função para alterar fail2ban.conf, por exemplo.

Eu poderia expandir se fosse interessante.

informação relacionada