0

この特定の機能セットに必要なオプションとスイッチの量のために、単純な bash エイリアスを作成したいと考えています。これは背景情報であり、問​​題ではありません。

問題のコマンドを実行するには、パスフレーズ (多くの場合、複数の場所) が必要です。これを最小限に抑え、同時に他のユーザーからのプライバシーを提供したいと考えています。

これがエイリアスの例です...

alias test="read -sp 'Enter passphrase: ' pass; gpg --batch --passphrase $pass --symmetric --cipher-algo aes256 -o file.ext.gpg file.ext"

エイリアスは正常に機能し、ユーザーにパスフレーズの入力を求め、それを復号化プロセスに適用します。

これが問題です: ファイルを暗号化してパスフレーズを入力すると (上記の例のように read -sp ユーティリティを使用せずに)、暗号化されたファイルのパスワードは、「読み取り」バイナリを使用して入力をマスクした場合とは異なります。

read -sp でキャプチャされた $pass の内容を表示すると、入力したとおりに表示され、追加の行末などはありません。

誰でもこれを経験しますか?

4

2 に答える 2

3

引用しません$passか?スペースなどが含まれている場合。また、$エイリアスの設定中に展開しないようにエスケープする必要があります。

そう:

alias test="read -sp 'Enter pp: ' pass; gpg --passphrase \"\$pass\" --batch --symmetric --cipher-algo aes256 -o file.ext.gpg file.ext"

これに加えて、パスフレーズが出力--passphrase-fdに終わらないように使用したい場合があります。ps

alias test="read -sp 'pp: ' pass; gpg --passphrase-fd 3 --etc-etc 3<<< \$pass"
于 2012-09-20T10:19:10.650 に答える
0

シェル関数は、引用符のレベルを排除するため、より単純になり、関数を他のファイルに一般化する必要がある場合はパラメーターを許可します。

# There is already a standard command called 'test'; use a different name
pass_encrypt () {
  in=$1
  out=$in.gpg
  read -rsp 'Enter passphrase: ' pass
  gpg --batch --passphrase-fd 3 --symmetric \
      --cipher-algo aes256 -o "$out" "$in" 3<<<$pass
}

(mvdsの使用の提案付き--passphrase-fd

于 2012-09-20T12:42:19.303 に答える