2010-03-27 4 views
6

아래의 스크립트는 Mac OS X에서 작동하는 데 사용되었지만, 우분투로 옮긴 이래로이 스크립트는 패스워드 파일에서 전혀 읽지 않는 것 같습니다. 명령 줄에서 실행할 때도 내가하는 일에 상관없이 팝업창이 나타나 암호를 묻습니다. 이것은 cron을 통해 실행되기 때문에, 나는 이런 일이 일어나기를 원하지 않습니다 ... 나는 프롬프트에서 파일의 패스워드를 읽길 원합니다. 참고하기 위해, 나는 암호-FD 및 암호 파일,도GnuPG 쉘 스크립트 - 패스워드 읽기를 거부합니다.

#!/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 

답변

0

귀하의 문제가 $passphrase가 null 아마 ... 일 어느 사용해보십시오 않았다. 우분투에서 sh은 을 Bash와 같은 방식으로 이해하지 못하도록 dash으로 심볼릭 링크되어 있습니다 (그러나 오류도 발생하지 않음).

당신은 당신의 오두막을 변경할 수 있습니다 : 당신이 제거하려는 경우

#!/bin/bash 

또는 $(cat pass.txt) 또한

가, 왜, 두 번째, 세 번째 및 네 번째 라인? pass_phrase=$(<pass.txt) (또는 pass_phrase=($(<pass.txt))를 결합하지 사용 파일의 첫 번째 "단어"를 제외하고는 모두 꺼짐).

Your previous question

0

사용

#!/bin/bash 

또는 대신 암호 구문 문제에 관해서는 #!/bin/sh

의 첫 번째 행으로

#!/usr/bin/env bash 

, 당신이해야 아마 t 일부 자동 메커니즘을 사용합니다. 자세한 내용은 gpg 설명서를 확인하십시오. gpg를 사용하지 않지만 gpg-agent을 확인할 수 있습니다.

0

두 솔루션은

  • http://www.roguedaemon.net/rephrase/
  • GPG는 --passphrase하지 않은 디스크립터를 --passphrase 사용 (첫 번째는 내 문제를 ;-) 해결)

    에코 yourpw | GPG --passphrase -fd 0 --output out.txt -d file.txt를

0

는,972을 가지고 있기 때문에 당신은 암호를 입력하라는 메시지가 있어요변수 세트 (취소를 클릭하면 스크립트가 파일의 암호 해독을 계속합니다). DISPLAY은 크론 환경에서 설정할 수 없습니다, 그래서 당신은 아마 그것을 무시 할 수 있지만, 확인하기 위해 또는 스크립트의 시작 부분에

unset DISPLAY 

를 추가 명령 프롬프트에서 스크립트를 테스트 할 수 또는 이전에 실행 실행 중.

은 또한 당신은 다중 사용자 시스템에 암호를 공개로 이어질 수 --passphrase 옵션을 사용하지 않아야합니다

#!/bin/sh 

#!/bin/bash 

에 변경해야 $(<file) 구문을 사용할 수 있습니다. 대신 --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 변수에 저장.

3

--passphrase-file 옵션이 손상되었거나 영광을 얻은 것 같습니다.

cat .password | gpg --passphrase-fd 0 --output foo --decrypt foo.gpg 
+0

네, -passphrase-FD가 근무 중 동안 작업을 --passphrase 파일을 가져올 수 없습니다. – Zitrax

+0

'--no-use-agent --batch'와 함께 작동합니다. 흥미롭게도'--passphrase'는 두 가지 옵션없이 작동합니다. –

0

--archive를 추가 --passphrase-file

0

에서 암호를 읽는 당신은해야합니다 사용 : 그래서처럼, 대신 --passphrase-fd 0을 사용했다

gpg --batch --passphrase-fd 1 --passphrase-file your_password_file -c your_file_to_encript.txt 
2

사용 옵션 을 --no-사용 에이전트. 이 옵션은 --passphrase 옵션을 사용하여 메시지를 표시하지 않습니다.

2

표준 입력을 통해 파일을 제공하고 싶지 않으면 (예 : 표준 입력을 통해 서명 할 내용을 제공하려는 git과 같은 다른 명령에이 파일을 연결하는 경우) 다른 파일을 사용할 수 있습니다 파일 설명 :

gpg --passphrase-fd 3 <your command here> 3< pass.txt 
5

이 작품은 :

gpg --no-use-agent --batch --passphrase-file pass.txt --output kkkk.tar.bz2 --decrypt kkk-data.tar.bz2.gpg