Вы получаете запрос пароля, потому что у вас установлена переменная DISPLAY
(если вы нажмете кнопку Отмена, скрипт продолжит расшифровку файлов). DISPLAY
не следует устанавливать в среде cron, так что вы, вероятно, можете ее игнорировать, но для уверенности или возможности протестировать скрипт из командной строки добавьте
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
.