obtém o valor base64 do comando openssl md5 no script

0


Eu estou tentando obter o valor base64 md5 do arquivo mais recente em um diretório de backup oracle:

 for file in "$(find /oracle/PD1/sapbackup/b*/ -newermt $date -type f)"; do openssl md5 -binary $file | base64 && echo $file >>/md5check/$date/PD1/md5local.txt; done

Quando executo este comando, recebo a soma de verificação completa de md5: Y1l1t+SGpQ7Jh0GZm9R5oTrEvfcGM7NaCuYediMH2MY= Mas eu quero pegar o valor base64:

# openssl md5 -binary /oracle/PD1/sapbackup/beyrnmmq/cntrlPD1.dbf | base64
Y1l1t+SGpQ7Jh0GZm9R5oQ==

Como posso fazer isso usando um loop for e gerar o valor do caminho do arquivo + md5 para um arquivo?
Obrigado!

    
por supervoj 13.06.2018 / 05:46

2 respostas

0

Isso deve fazer o que você está pedindo.

Eu removi a opção -binary porque supus que você queria o hash 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
    
por 13.06.2018 / 06:20
0

Em primeiro lugar, não faça um loop pela saída de find . Em vez disso, use find para executar seu comando. Isso garante que os nomes de arquivos não fiquem desconfigurados. Pelo mesmo motivo, você precisa citar suas expansões variáveis .

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

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

Isso localizaria qualquer arquivo regular dentro ou abaixo de qualquer um dos diretórios /oracle/PD1/sapbackup/b*/ que tivessem um registro de data e hora de modificação mais recente que $date . Para esses arquivos, um script curto é executado. O script imprime o nome do caminho do arquivo junto com a soma de verificação MD5 codificada em base64. A saída de find vai para o arquivo indicado no final.

O redirecionamento para o arquivo de saída poderia obviamente ser feito com >> dentro do script, mas isso significaria ter que abrir o arquivo de saída para gravar mais de uma vez (também, $date não está disponível lá). / p>

Veja também:

por 13.06.2018 / 08:35

Tags