Para # 6, o read
bash embutido será útil. Para o número 9, verifique se os nomes das variáveis estão entre aspas duplas em todos os lugares em que você os usa.
Atualmente, estou trabalhando em uma série de exercícios para melhorar meu conhecimento de script bash.
O exercício em que estou trabalhando é o seguinte: Escreva um script chamado encrypt.sh que é usado para criptografar arquivos. Aqui estão os requisitos para o script:
- It must use openssl to encrypt files.
- It must take the name of a file to encrypt as a parameter
- When it encrypts a file it must put the encrypted version in a file with the same name but ".enc" appended.
- It must be safe to run on a system with other users. That is, it must not pass any passwords as command line arguments.
- It must read the password to use from an environment variable called ENCRYPTION_KEY.
- If that environment variable is not set, it should prompt the user to enter a password and use that instead.
- It should display an error if no parameter is provided and exit with exit code 2.
- It should display a message if the user calls the script with a --help switch.
- It should work with files with spaces in the name.
Sinto que meu script atual atendeu aos requisitos 1-5,7-8. No entanto, estou um pouco debatido em relação a 6 e 9.
Qualquer feedback sobre meus trabalhos atuais ou soluções para meus requisitos ausentes seria muito apreciado.
Obrigado antecipadamente.
usage="Usage: Enter the name of the file you would like to encrypt as a parameter, eg. $0 words"
ENCRYPTION_KEY="1234"
export ENCRYPTION_KEY
openssl enc -e -aes256 -in "$1" -out "$1".enc -pass env:ENCRYPTION_KEY
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
echo $usage
fi
if test -z ${1}
then
echo "${0} :ERROR: No parameters provided. Please see -h or --help for usage." 1>&2
exit 1
fi
#DECODE (script is not required to decode, just here for testing purposes)
#openssl enc -d -aes256 -in words.enc -out words.enc.dec -pass env:ENCRYPTION_KEY
Para # 6, o read
bash embutido será útil. Para o número 9, verifique se os nomes das variáveis estão entre aspas duplas em todos os lugares em que você os usa.
Tags bash shell shell-script