¿Herramientas BASH para manipulación de archivos conf?

¿Herramientas BASH para manipulación de archivos conf?

Me pregunto si existen herramientas para usar en scripts bash que puedan permitirle fácilmentemanipular(agregar, eliminar, actualizar) directivas dentro de archivos conf?

por ejemplo, fail2ban.conf tiene directivas agrupadas, cada una en sus propias secciones.

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

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

mientras que pagespeed.conf tiene directivas mixtas, algunas en sus propias secciones y otras dispuestas por todas partes.

<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

Entiendes la idea.

¿Existe alguna herramienta que le permita: por ejemplo, manipular la directiva 'habilitada' en la sección 'proftpd' de fail2ban.conf?

¿O manipular la directiva 'Permitir desde' en la sección 'Ubicación /pagespeed_admin' de pagespeed.conf?

¿O manipular la directiva 'ModPagespeedMessageBufferSize' en la sección 'ningún particular' de pagespeed.conf?

Gracias

Respuesta1

No, por la sencilla razón de que hay demasiados formatos que podría utilizar un archivo de configuración. Creo que lo mejor que puedes hacer es crear el tuyo propio utilizando herramientas de procesamiento de texto.

Puede haber bibliotecas para algunos formatos (JSON, por ejemplo), pero los autores de herramientas son libres de usar cualquier formato que deseen, por lo que no será posible una herramienta general. Sólo para ilustrar el punto, aquí hay algunas líneas de algunos archivos 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. tinte

    #---------------------------------------------
    # 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étera etcétera.

Respuesta2

En realidad no, pero podrías crear algo para un diseño de configuración específico. Algo como

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

podría diseñarse como una función para cambiar fail2ban.conf, por ejemplo.

Podría ampliarlo si fuera interesante.

información relacionada