
Estou trabalhando em um "assistente de recursos edgemax", que é uma espécie de sistema de plugins. Existem apenas três arquivos permitidos em um tarball de plugin: um script bash como backend, um arquivo HTML como frontend e um arquivo validação.json para validação de entrada do frontend, então por favor não pergunte por que eu não coloco apenas os pacotes deb no tarball - eles são ignorados.
Quero enviar pacotes deb com esse "assistente", então tenho que codificar os arquivos em base64 e colocá-los no script bash para serem extraídos quando o script for executado. Agora, eu sei como fazer tudo isso, mas estou fazendo isso manualmente, copiando e colando a parte base64 no arquivo bash e depois recortando e colando na posição correta, o que é inconveniente ao atualizar esses pacotes para a versão recente.
Haveria a possibilidade de codificar os arquivos deb em base64 e gravá-los na linha 65 do script bash?
Eu liEste artigoe eu tentei
sed -i "65i\\$(base64 package.deb)" wizard-run
mas isso reclama com:
bash: /bin/sed: Argument list too long
Aqui está o meu código; a parte base64 deve estar entre aspas duplas da instrução echo:
if [ $arch == 'mips' ]; then
# base64: olsrd_0.9.0.3-1_mips.deb
echo "
<base64encoded-pkg>
" | base64 -d > $cfgusrdir/olsrd_0.9.0.3-1_mips.deb
# base64: olsrd-plugins_0.9.0.3-1_mips.deb
echo "
<base64encoded-pkg>
" | base64 -d > $cfgusrdir/olsrd-plugins_0.9.0.3-1_mips.deb
fi
Responder1
Usando sed
e redirecionamento de E/S:
{
sed -n '1,64p' wizard-run;
base64 package.deb;
sed -n '66,$p' wizard-run;
} > wizard-run.tmp && mv wizard-run.tmp wizard-run