gpg:处理消息失败:eof;错误Unix ksh GPG解密脚本

时间:2013-08-05 21:50:38

标签: unix ksh gnupg

我是Unix和ksh脚本编写的新手。我写了一个解密gpg消息的脚本。我得到这个错误,我不知道如何解决。我希望有人可以查看我的剧本并帮助我弄清楚发生了什么。感谢您提供的任何帮助。 这是错误:

gpg: processing message failed: eof

这是我的剧本:

#!/bin/ksh
####################################################################       
#   1. Decrypt Inbound File                                        #
#                                                                  #
#   Two parms are required:   output file                          #
#                             encrypted file(to be decrypted)      #
#                                                                  #
####################################################################
# Variable declaration                                             #
####################################################################
outputF=$1 
encryptedF=$2
id=$$
####################################################################
# print_message                                                    #
#    prints messages to log file                                   #
####################################################################
print_message()
{
   message="$1"
   echo "`date '+%m-%d-%y %T'`  $message" 

}
#####################################################################
# Validate input parameters and existence of encrypted file         #
#####################################################################

if [ $1 -eq ""] ||  [ $2 -eq ""]
    then 
    print_message "Parameters not satisfied"

    exit 1 
fi 

if [ ! -f $encryptedF ]
then
   print_message "$id ERROR: $encryptedF File does not exist"
   exit 1
fi

#####################################################
#               Decrypt encryptedF                  #
#####################################################

gpg --output "$outputF" --decrypt "$encryptedF"

echo "PASSPHRASE" | gpg --passphrase-fd 0 

print_message "$id INFO: File Decrypted Successfully"

1 个答案:

答案 0 :(得分:3)

这不是gpg问题:-)您的脚本尝试两次运行gpg二进制文件。第一个调用尝试解码文件:

gpg --output "$outputF" --decrypt "$encryptedF"

由于没有给出密码短语输入的方法,gpg会尝试从控制台读取密码短语。现在发生了什么,取决于你的gpg配置,ksh行为等,但我怀疑与STDIN的交互在某种程度上已经瘫痪,导致EOF错误。

问题的解决方案:您必须将密码短语源添加到解密呼叫中:

echo "PASSPHRASE" | gpg --passphrase-fd 0 --output "$outputF" --decrypt "$encryptedF"