получить значение base64 из команды openssl md5 в скрипте

Попробуйте добавьте audit = 0 в строку ядра.

Это подарок systemd , известное ограничение кода аудита в ядре, и он отслеживается здесь.

Необходимо исправить в ядре.

Ссылка Леннарта Поеттеринга

0
13.06.2018, 06:46
2 ответа

Это должно делать то, что вы просите.

Я удалил опцию-binary , потому что предположил, что вам нужен хэш md5.

for file in "$(find /oracle/PD1/sapbackup/b*/ -newermt $date -type f)"
do 
     MD5=$(openssl md5 $file | awk '{ print $2 }')
     BASE64=$(echo $MD5 | base64)
     echo "$file : md5 => [ ${MD5} ] / base64 => [ ${BASE64} ]" >> /md5check/$date/PD1/md5local.txt
done
0
28.01.2020, 04:21

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

mkdir -p "/md5check/$date/PD1"

find /oracle/PD1/sapbackup/b*/ -type f -newermt "$date" -exec sh -c '
    for pathname do
        printf "file = %s\n" "$pathname"
        openssl md5 -binary "$pathname" | base64
    done' sh {} + >"/md5check/$date/PD1/md5local.txt"

Это позволит найти любой обычный файл в любом из каталогов /oracle/PD1/sapbackup/b*/или ниже, который имеет отметку времени модификации более новую, чем $date. Для этих файлов выполняется короткий скрипт. Сценарий печатает путь к файлу вместе с контрольной суммой MD5 в кодировке base64. Вывод findидет в указанный файл в конце.

Очевидно, что перенаправление в выходной файл может быть выполнено с помощью >>внутри скрипта, но это будет означать необходимость открывать выходной файл для записи более одного раза (также, $dateтам недоступно ).

См. также:

1
28.01.2020, 04:21

Теги

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