У меня есть скрипт, который выполняет команду шифрования gpg в сценарии sh через cronjob. Это часть моего сценариявыполнить команду шифрования gpg через cronjob
do
gpg --batch --no-tty --yes --recipient $Key --output $Outputdir/${v}.pgp --encrypt ${v}
echo "$?"
if ["$?" -eq 0 ];
then
mv $Inputdir/${v} $Readydir/
echo "file moved"
else
echo "error in encryption"
fi
done
эхо $? дает значение, как 2.
попробовал сильфона команду также
gpg --batch --home-dir dir --recipient $Key --output $Outputdir/${v}.pgp --encrypt ${v}
где реж =/USR/бен/GPG
Мой полный сценарий
#set -x
PT=/gonm1_apps/xfb/ref/phoenix_drop
Inputdir=`grep Inputdir ${PT}/param.cfg | cut -d "=" -f2`
Outputdir=`grep Outputdir ${PT}/param.cfg | cut -d "=" -f2`
Key=`grep Key ${PT}/param.cfg | cut -d "=" -f2`
Readydir=`grep Readydir ${PT}/param.cfg | cut -d "=" -f2`
echo $USER
if [ "$(ls -la $Inputdir | grep -E 'S*.DAT')" ]; then
echo "Take action $Inputdir is not Empty"
cd $Inputdir
for v in `ls SID_090_*`
do
gpg --recipient $Key --output $Outputdir/${v}.pgp --encrypt ${v}
echo "$?"
if ["$?" -eq 0 ];
then
mv $Inputdir/${v} $Readydir/
echo "file moved"
else
echo "error in encryption"
fi
done
cd ${PT}
else
echo "$Inputdir is Empty"
fi
Необходимо напечатать сообщение об ошибке. Если вы отбрасываете выход в любом месте ('2>/dev/null или аналогичный), удалите его.Выполняется ли cronjob с использованием того же пользователя, который вы проверили вручную? –
Да, я выполнил cron с тем же пользователем, я попробовал новый код Java, чтобы сделать то же самое и получил сообщение об ошибке, поскольку открытый ключ не найден. –
Вы действительно уверены, что выполняете работу cron под тем же самым пользователем? Что произойдет, если вы запустите 'echo $ USER'? Похоже, GnuPG пытается найти ключ в домашнем каталоге GnuPG другого пользователя. '--home-dir dir' будет использовать некоторую подпапку' dir' в домашнем каталоге пользователя, лучше дать абсолютный путь. Также не забывайте следить за разрешениями при использовании '--homedir'. –