Estou tentando descobrir como "capturar" o nome de um arquivo baixado por meio wget
de curl
comandos em um script de shell.
O que eu gostaria (e o que parece impossível) é algo assim:
newfilename=$(wget --content-disposition --trust-server-names --timestamping "${myurl}")
xattr -w user.download.url "${myurl}" "${newfilename}"
chmod 0400 "${newfilename}"
setfacl -m u:lisa:r "${newfilename}"
ou com ondulação:
newfilename=$(curl --continue-at - --compressed --remote-name-all --remote-header-name --remote-time "${myurl}")
xattr -w user.download.url "${myurl}" "${newfilename}"
Agora, por algum motivo, acho que segurança, nenhum comando parece disposto a retornar o nome de arquivo fornecido pelo servidor (caso ele possa conter injeção remota de código)? Mas isso faz pouco sentido para mim quando o mesmo comando está perfeitamente disposto a usar essa string de nome de arquivo remoto para criar um arquivo no disco?
Existe uma maneira de fazer isso, se necessário, por meio de alguma solução alternativa que verifique o diretório de destino de um arquivo criado via inotify
watch?
Habilite a
--xattr
opção curl ou wget. Isso fará com que ele armazene automaticamente a URL para o[user.]xdg.origin.url
atributo.A opção curl
--write-out
pode gerar campos específicos para stdout:Para o wget, você pode pelo menos logar no arquivo e analisar os resultados: