raserafim
(usa Slackware)
Enviado em 16/08/2017 - 14:22h
heckjp escreveu:
"Posso estar enganado, mas acredito que durante a execução, o script vai "parar" para solicitar a senha do arquivo."
uruk escreveu:
zipdetails test.zip | grep Encryption || printf "O arquivo não está protegido com uma senha \n"
"Se o arquivo tiver uma senha, o grep achará a ocorrência. Caso o contrário, não haverá a string "Encryption" na saída e, por conseguinte, o grep não achará nenhuma ocorrência.
Não sei como fazer com .rar pois o formato é proprietário e eu não uso."
encontrei uma solução que, ao que parece, resolve o problema das observações do colega "heckjp" e do colega "uruk".
para que não seja solicitado a senha no momento da extração é possível passar uma senha como parâmetro. assim, caso o arquivo não seja protegido por senha o arquivo descompacta normalmente; e para o caso de o arquivo ser protegido por senha, então, será emitido uma mensagem de erro informando que a senha não confere.
este método funciona tanto para o ".zip" quanto para o ".rar".
deste modo, basta tratar com o comando "grep" a mensagem de erro típica de um formato ou mensagem de erro típica do outro formato.
a solução ficou mais ou menos assim...
if [ verificar-extensão ".zip" ]
then
cmdrpwd='unzip -P "$pwd" $f'
msgpwd="incorrect password"
elif [ verificar-extensão ".rar" ]
then
cmdrpwd='unrar -p"$pwd" e $f'
msgpwd="wrong password"
fi
k=$(eval $cmdrpwd 2>&1)
if [ $(echo $k | grep "$msgpwd" | wc -l) -gt 0 ] #se tem erro...
then
comando...
fi
fiz inspirado a partir do seguinte link: