Не может подключить веб-камеру USB к компьютеру через переключатель KVM?

различное дерево мерзавца-r - резюме 1.0 2.0 должно сделать это.

Вы также можете просто разделить список деревьев:

diff <(git ls-tree -r --name-only 1.0) <(git ls-tree -r --name-only 2.0)
-121--128425-

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

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

awk '
    /<key>bootHow<\/key>/ {
        getline
        gsub("[^0-9]*integer[^0-9]*", "");
        print;
     }
'
  • /< key > 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
$
-121--195013-

Сохраняет ли она данные непосредственно в файле с помощью команды -w или сохраняет их при остановке?

По умолчанию Эти буферы обычно имеют 4K или 8K байт, поэтому каждые 4K или 8K байт они записывают данные в файл. Когда он остановлен, он записывает все, что еще не написал.

В более новых версиях tcpdump (построенных с более новыми версиями libpcap) может использоваться флаг -U ; он сообщает tcpdump записывать каждый пакет по мере его получения, даже если буфер еще не заполнен.

Так что если это было письмо на usbstick,Можно я просто демонтирую его, и это просто сохранит все данные на палке.

Нет. Сначала следует остановить tcpdump, а затем отключить USB-накопитель, если вы хотите, чтобы все данные были там.

Кроме того, если вы не сделаете принудительное отключение, система может отказаться разрешить вам демонтировать USB палку, пока tcpdump пишет в файл на этой палке. Принудительное отключение может привести к потере данных в tcpdump и , возможно, к потере данных в буферах файловой системы ядра.

Есть ли возможность просто отключить его и записать на него данные.

При отключении USB-накопителя во время работы tcpdump будут потеряны данные в tcpdump и, возможно, данные в буферах файловой системы ядра.

Если вы работаете с -U , то единственные данные, которые вы потеряете в tcpdump, это любые данные, которые находятся в середине записи, когда вы демонтируете или отключите USB-накопитель, но вы все равно потеряете все данные, которые находятся в буфере файловой системы ядра и еще не записаны на USB-накопитель.

0
17.07.2018, 05:28
0 ответов

Теги

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