7

以下のスクリプトは、以前は Mac OS X で動作していましたが、Ubuntu に移行してから、パスワード ファイルからまったく読み取れなくなったようです。コマンドラインから実行しても、何をしてもパスワードの入力を求めるポップアップ プロンプトが表示されます。これはcron経由で実行されるため、これが発生したくありません...プロンプトなしでファイルからパスワードを読み取ってもらいたいです。注意してください、私は passphrase-fd と passphrase-file を使用しようとしましたが、どちらも機能しませんでした...

#!/bin/sh
p=$(<pass.txt)
set -- $p
pass_phrase=$1
destination="/var/www/decrypted"
cd /var/sl_bin/
for FILE in *.pgp;
do
    FILENAME=${FILE%.pgp}
    gpg --passphrase "$pass_phrase" --output "$destination/$FILENAME" --decrypt "$FILE"
    rm -f $FILE
done
4

11 に答える 11

6

これは機能します:

gpg --no-use-agent --batch --passphrase-file pass.txt --output kkkk.tar.bz2  --decrypt kkk-data.tar.bz2.gpg
于 2015-03-19T13:20:31.537 に答える
3

--passphrase-fileオプションが壊れているようです/受け入れられていません。--passphrase-fd 0代わりに次のように使用する必要がありました。

cat .password | gpg --passphrase-fd 0 --output foo --decrypt foo.gpg
于 2012-04-30T23:13:04.933 に答える
2

オプション--no-use-agent を使用します。オプション--passphraseの使用を求めるプロンプトは表示されません。

于 2013-03-21T08:43:43.937 に答える
2

標準入力経由でファイルを提供したくない場合 (たとえば、標準入力経由で署名するコンテンツを提供したい git などの別のコマンドにこれをプラグインしている場合)、別のファイル記述子を使用できます。

gpg --passphrase-fd 3 <your command here> 3< pass.txt
于 2014-08-21T03:17:08.243 に答える
0

--archiveからパスワードを読み取るために追加--passphrase-file

于 2013-01-14T11:19:52.220 に答える
0

変数が設定されているため、パスワード プロンプトがDISPLAY表示されます ([キャンセル] をクリックすると、スクリプトはファイルの復号化を続行します)。DISPLAYcron環境では設定しないでください。おそらく無視できますが、確実に、またはコマンドプロンプトからスクリプトをテストできるようにするために追加します

unset DISPLAY

スクリプトの先頭に追加するか、実行する前に実行します。

また、構文を使用できるようにするに$(<file)は、変更する必要があります

#!/bin/sh

#!/bin/bash

--passphraseマルチユーザー システムでパスワードが漏洩する可能性があるオプションは使用しないでください。代わりに使用できます--passphrase-file。スクリプトを変更する方法は次のとおりです。

#!/bin/sh
PASSFILE=$(pwd)/pass.txt
destination="/var/www/decrypted"
cd /var/sl_bin/
for FILE in *.pgp;
do
    FILENAME=${FILE%.pgp}
    gpg --passphrase-file $PASSFILE --output "$destination/$FILENAME" --decrypt "$FILE"
    rm -f $FILE
done

現在のディレクトリを変更する前にパスワードファイルの場所を保存するために、PASSFILE変数に保存しました。

于 2010-11-06T18:08:56.987 に答える
0

使用する

#!/bin/bash

また

#!/usr/bin/env bash

代わりにあなたの最初の行として#!/bin/sh

パス フレーズの問題に関しては、何らかの自動メカニズムを使用するようにしてください。詳細については、gpg のドキュメントを確認してください。私は gpg を使用していませんが、チェックアウトできますgpg-agent

于 2010-04-10T02:10:02.670 に答える
0

あなたの問題はおそらくそれ$passphraseがnullであることです。Ubuntuでは、Bashと同じように理解できないshシンボリックリンクがあります(ただし、エラーも発生しません)。dash$(<file_name)

シバンを次のように変更できます。

#!/bin/bash

または使用$(cat pass.txt)

また、2 行目、3 行目、4 行目を結合してみませんか?: pass_phrase=$(<pass.txt)(またはpass_phrase=($(<pass.txt))、ファイル内の最初の「単語」以外をすべて取り除こうとしている場合)。

以前の質問

于 2010-04-10T01:31:41.513 に答える
0

2つの解決策(最初の解決策は私の問題を解決しました;-))

于 2010-11-02T09:18:24.290 に答える
0

以下を使用する必要があります。

gpg --batch --passphrase-fd 1 --passphrase-file your_password_file -c your_file_to_encript.txt
于 2013-02-03T15:36:49.740 に答える
0

以下のスクリプトを使用

#! /bin/sh
gpg --pinentry-mode loopback --passphrase='PASSWORD' --output /output/outputFileName /input/inputFileName
于 2020-09-26T08:00:23.973 に答える