Base64 decodifica e sobrescreve o arquivo

0

Eu tenho um arquivo que contém dados de imagem codificados em base64: ~ / dog / 1.jpg

Eu coloquei lá via SSH, e a base 64 codificou os dados para que fosse seguro transferir no terminal. Suponha que os dados da imagem base64 não estejam corrompidos.

Agora que tenho os dados da imagem passados para o outro servidor, preciso decodificar o conteúdo do arquivo e, em seguida, substituir o arquivo codificado pelo arquivo decodificado.

E eu não posso usar o comando base64 como não está disponível no servidor remoto.

Como eu posso decodificar base64 conteúdo do arquivo e, em seguida, substituir o conteúdo do arquivo codificado com o conteúdo decodificado, de preferência usando perl?

Isto é o que eu tenho agora ...

# Decode image data
poo=$(cat ~/dog/1.jpg | perl -MMIME::Base64 -ne 'printf "%s\n",decode_base64($_)'); 

# Write decoded data to file
echo $poo >| ~/dog/1.jpg

Isso substitui o arquivo, mas não decodifica corretamente a imagem.

    
por Occam's Razor 27.04.2017 / 03:03

1 resposta

2
perl -MMIME::Base64 -i -0777ne 'print decode_base64($_)' ~/dog/1.jpg

Evitará ter que usar qualquer intermediário (seja uma variável ou um arquivo temporário) e armazenará o arquivo decodificado de volta no arquivo jpeg original.

    
por 27.04.2017 / 04:32