Инструменты BASH для манипуляции файлами conf?

Инструменты BASH для манипуляции файлами conf?

Мне интересно, есть ли какие-нибудь инструменты для использования в скриптах bash, которые могут легко позволить вамманипулировать(добавить, удалить, обновить) директивы внутри conf-файлов?

например, fail2ban.conf сгруппировал директивы, каждая из которых находится в своем собственном разделе.

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

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

в то время как pagespeed.conf имеет смешанные директивы, некоторые из которых находятся в своих собственных разделах, а некоторые разбросаны по всему файлу.

<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

Вы поняли.

Существуют ли какие-либо инструменты, которые позволяют, например, манипулировать директивой «enabled» в разделе «proftpd» файла fail2ban.conf?

или изменить директиву «Разрешить из» в разделе «Расположение /pagespeed_admin» файла pagespeed.conf?

или манипулировать директивой «ModPagespeedMessageBufferSize» в разделе «no particular» файла pagespeed.conf?

Спасибо

решение1

Нет, по той простой причине, что существует слишком много форматов, которые может использовать файл конфигурации. Лучшее, что вы можете сделать, я думаю, это свернуть свой собственный с помощью инструментов обработки текста.

Для некоторых форматов (например, JSON) могут быть библиотеки, но авторы инструментов вольны использовать любой формат, который им нравится, поэтому универсальный инструмент невозможен. Просто для иллюстрации приведу несколько строк из нескольких файлов 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. ви

      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. оттенок

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

и т.д. и т.п.

решение2

Не совсем, но можно построить что-то для определенной конфигурации макета. Что-то вроде

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

может быть разработана как функция для изменения fail2ban.conf, например.

Я мог бы рассказать подробнее, если это будет интересно.

Связанный контент