基本的なopenssl暗号化スクリプトの問題

基本的なopenssl暗号化スクリプトの問題

私は現在、bashスクリプトの知識を向上させるために一連の練習をしています。

私がしている練習は次のとおりです。ファイルを暗号化する encrypt.sh というスクリプトを書くことです。スクリプトの要件は次のとおりです。

  1. ファイルを暗号化するには、opensslを使用する必要があります。
  2. 暗号化するファイル名をパラメータとして使用する必要があります。
  3. ファイルを暗号化するときは、名前は同じですが、「.enc」が追加されたファイルに暗号化されたバージョンを入れる必要があります。
  4. 他のユーザーと一緒にシステムで実行するのは安全でなければなりません。つまり、どのパスワードもコマンドライン引数として渡すことはできません。
  5. ENCRYPTION_KEYという環境変数で使用するパスワードを読む必要があります。
  6. この環境変数が設定されていない場合は、ユーザーにパスワードの入力を求められ、そのパスワードを使用する必要があります。
  7. 引数が指定されない場合、エラーが表示され、終了コード 2 で終了します。
  8. ユーザーが --help スイッチを使用してスクリプトを呼び出すと、メッセージが表示されます。
  9. 名前にスペースが含まれているファイルに対して機能します。

現在のスクリプトはすでに要件1-5,7-8を満たしているようです。ところで6番と9番がちょっと混乱しますね。

私が現在作業している作業や欠落している要件に対するソリューションに関するフィードバックをいただきありがとうございます。

よろしくお願いします。

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

答え1

#6の場合、この組み込みread関数役に立つでしょう。 #9の場合、変数名を使用するたびに二重引用符で囲む必要があります。

関連情報