Каково различие между ТИПОМ и директивами DEVICETYPE в ifcfg сценариях?

Ваши каталоги изменений сценария когда это работает, что означает это, не будут работать с серией относительных путей. Вы затем прокомментировали позже, что только хотели проверить на существование каталога, не способность использовать cd, таким образом, ответы не должны использовать cd вообще. Пересмотренный. Используя tput и цвета от man terminfo:

#!/bin/bash -u
# OUTPUT-COLORING
red=$( tput setaf 1 )
green=$( tput setaf 2 )
NC=$( tput setaf 0 )      # or perhaps: tput sgr0

# FUNCTIONS
# directoryExists - Does the directory exist?
function directoryExists {
    # was: do the cd in a sub-shell so it doesn't change our own PWD
    # was: if errmsg=$( cd -- "$1" 2>&1 ) ; then
    if [ -d "$1" ] ; then
        # was: echo "${green}$1${NC}"
        printf "%s\n" "${green}$1${NC}"
    else
        # was: echo "${red}$1${NC}"
        printf "%s\n" "${red}$1${NC}"
        # was: optional: printf "%s\n" "${red}$1 -- $errmsg${NC}"
    fi
}

(Отредактированный для использования более неуязвимого printf вместо проблематичного echo это могло бы действовать на escape-последовательности в тексте.)

3
24.09.2014, 17:10
1 ответ

После проверки страниц руководства, документации initscripts (пакет, владеющий сценариями ifcfg) в /usr/share/doc/initscripts-*/sysconfig.txt, списка рассылки initscripts и нескольких ошибок из системы отслеживания ошибок redhat, я понял только одно: чтобы избежать проблем, эти две директивы не следует использовать в одном скрипте ifcfg.

Затем я направил свой вопрос Иржи Пирко, разработчику проекта Network Teaming (libteam). Вот ответ, который я получил от него:

Причина [использования DEVICETYPE] была политическая, а не техническая. Используя DEVICETYPE, вы можете просто установить дополнительные сценарии инициализации с пакетом (teamd). Но это больше не имеет значения, потому что скрипты инициализации теперь напрямую поддерживают команду, так что вы можете использовать TYPE.


Вопреки ответу Иржи, я должен отметить, что согласно моим тестам все еще имеет значение, какая директива используется в моей системе. Интерфейс объединения в сеть работает с директивой DEVICETYPE = Team , но не работает с директивой TYPE = Team .

Моя конфигурация:

  • CentOS Linux, выпуск 7.0.1406
  • libteam-1.9-15.el7.x86_64
  • teamd-1.9-15.el7.x86_64
  • initscripts-9.49.17-1. el7.x86_64

Обновление от Джири после того, как я указал, что использование DEVICETYPE вместо TYPE по-прежнему имеет значение для интерфейсов объединения:

Поддержка добавляется следующей фиксацией: https: // git. fedorahosted.org/cgit/initscripts.git/commit/?id=3235be4a3da91bc91c698b318935240dbdf81aac

Если этого нет в версии 7.0, я думаю, она будет в версии 7.1

3
27.01.2020, 21:23

Теги

Похожие вопросы