TCB включено во время обновления

Хотя это решение может выглядеть длиннее, на самом деле оно намного меньше кода и его легко тестировать. Частично проблема заключается в том, что вы начали с некачественным скриптом. Обычно конвейеры с несколькими командами awk нуждаются в улучшении. Я не знаю, подходит ли следующее для вашей ситуации, но я надеюсь, что это поможет лучше понять один из способов решения этой проблемы.

Чтобы получить целочисленное значение из потока xml, вы можете использовать awk следующим образом:

awk '
    /<key>bootHow<\/key>/ {
        getline
        gsub("[^0-9]*integer[^0-9]*", "");
        print;
     }
'
  • / bootHow <\ / key> / адресует строку, которая будет изменена действиями в фигурных скобках {...} .
  • getline считывает следующую строку ввода в $ 0. Следующая строка должна содержать целочисленный код.
  • gsub удаляет все нецифровые символы из строки.
  • выведите строку. awk по умолчанию не печатает строки.

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

Функция boothow инкапсулирует ранее описанный сценарий awk .

Функция dfstatus считывает коды «bootHow» со стандартного ввода и выводит соответствующие строки состояния df на стандартный вывод.

Скрипт в настоящее время настроен для тестирования. Его запуск приведет к прохождению некоторых тестовых данных через процесс. Линия, вызывающая deepfreeze , закомментирована:

#!/bin/sh

deepfreeze_status() {
    deepfreeze=/Library/Application\ Support/Faronics/Deep\ Freeze/deepfreeze
    if [ ! -x "$deepfreeze" ]
    then
        status="DeepFreeze not installed"
    else
        status=$(
            DFXPSWD=password "$deepfreeze" -u user -p status -x |
             boothow |
             dfstatus
        )
    fi
    echo "<result>$status</result>"
}

test_boothow() {
    # test boothow and dfstatus functions:
    dfdata='
        <integer>a</integer>
        <key>other1</key>
        <integer>b</integer>
        <key>bootHow</key>
        <integer>1</integer>
        <key>other2</key>
        <integer>c</integer>
    '
    echo "$dfdata" | boothow | dfstatus
}

boothow() {
    awk '
        /<key>bootHow<\/key>/ {
            getline
            gsub("[^0-9]*", "");
            print;
        }
    '
}

dfstatus() {
    while read bhow
    do
        case $bhow in
            0) echo "frozen" ;;
            1) echo "boot thawed for next x reboots" ;;
            2) echo "boot thawed" ;;
            *) echo "unknown status '$bhow'"; return 1 ;;
        esac
    done
}

test_boothow
#deepfreeze_status

В следующей записи приведенный выше сценарий был сохранен как ./ myscript.sh .

При запуске . ./myscript.sh (обратите внимание на одинокий . ), ваша интерактивная оболочка читает и выполняет сценарий в текущем процессе оболочки . Функции будут существовать и доступны как команды в вашей текущей оболочке.

$ . ./myscript.sh
boot thawed for next x reboots

Теперь команды boothow и dfstatus и test_boothow и deepfreeze_status доступны в вашей текущей оболочке. Проверьте команду boothow :

$ boothow
<key>bootHow</key>
<integer>2</integer>
2
$ printf '<key>bootHow</key>\n<integer>2</integer>\n' | boothow
2

Проверьте команду dfstatus , включая код состояния выхода ( $? ):

$ dfstatus
0
frozen
1
boot thawed for next x reboots
2
boot thawed
3
unknown status '3'
$ echo $?
1
$
$ echo 1 | dfstatus
boot thawed for next x reboots
$ echo $?
0
$ echo 1 1 | dfstatus
unknown status '1 1'
$ echo $?
1
$
0
25.09.2018, 19:29
1 ответ

Поддержка IBM может быть самым официальным ответом, который вы можете получить; если не называть их, я бы сослался на Installing the Trusted Computing Base (TCB )в AIX 6.1 и 7.1 , где частично говорится:

TCB cannot be added or enabled on a system that has already been installed. It can only be chosen when AIX is first installed.

Учитывая, что одним из требований является выбор New and Complete Overwriteв качестве метода установки, я бы предположил, что нет, это невозможно во время обновления.

0
28.01.2020, 04:13

Теги

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