BASH-Tools zur Manipulation von Konfigurationsdateien?

BASH-Tools zur Manipulation von Konfigurationsdateien?

Ich frage mich, ob es Tools für den Einsatz in Bash-Skripten gibt, mit denen Sie problemlosmanipulieren(hinzufügen, entfernen, aktualisieren) Anweisungen in Konfigurationsdateien?

Beispielsweise hat fail2ban.conf gruppierte Anweisungen, jede in einem eigenen Abschnitt.

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

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

wohingegen pagespeed.conf gemischte Anweisungen enthält, einige in eigenen Abschnitten und einige überall verteilt.

<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

Du hast die Idee.

Gibt es Tools, mit denen Sie beispielsweise die Direktive „enabled“ im Abschnitt „proftpd“ von fail2ban.conf manipulieren können?

oder die Anweisung „Allow from“ im Abschnitt „Location /pagespeed_admin“ von pagespeed.conf manipulieren?

oder die Direktive „ModPagespeedMessageBufferSize“ im Abschnitt „kein bestimmter“ von pagespeed.conf manipulieren?

Danke

Antwort1

Nein, aus dem einfachen Grund, dass es einfach zu viele Formate gibt, die eine Konfigurationsdatei verwenden könnte. Ich denke, das Beste, was Sie tun können, ist, mithilfe von Textverarbeitungstools Ihr eigenes Format zu erstellen.

Es gibt möglicherweise Bibliotheken für einige Formate (z. B. JSON), aber die Autoren der Tools können jedes beliebige Format verwenden, sodass ein allgemeines Tool nicht möglich ist. Zur Veranschaulichung hier einige Zeilen aus einigen Konfigurationsdateien:

  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. Farbton

    #---------------------------------------------
    # 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
    

usw., usw.

Antwort2

Nicht wirklich, aber Sie könnten etwas für ein bestimmtes Konfigurationslayout erstellen. So etwas wie

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

könnte beispielsweise als Funktion zum Ändern von fail2ban.conf konzipiert werden.

Ich könnte es erweitern, wenn es überhaupt interessant wäre.

verwandte Informationen