Ejecutar un script de gpg shell para descifrar un archivo a través de Automator

Regularmente necesito descifrar un archivo encriptado con gpg (siempre el mismo) para simplemente verlo en TextEdit. Tengo un script de shell muy simple para eso. Se parece a esto:

#!/bin/sh
outfile=`mktemp -t $$`  # Temporary file name
gpg --output $outfile --decrypt /path/to/file.gpg
open -a TextEdit $outfile
sleep 1
rm $outfile

Cuando se ejecuta desde la terminal, todo va bien. GPG solicita mi frase de contraseña en una ventana emergente, aparece TextEdit, el archivo temporal se elimina y todo es genial. No es así en Automator. Selecciono "Ejecutar script de shell", ignoro la entrada del script de shell, pego el contenido del script (excepto la primera línea). TextEdit aparece con un archivo en blanco y GPG nunca solicita la contraseña. Intenté usar la ruta completa a GPG pero eso no funcionó. No sé prácticamente nada de las acciones de Automator, por lo que el problema seguramente proviene de mí.

¡Cualquier ayuda apreciada!

Respuestas (1)

La acción "Ejecutar script de shell" de Automator ejecuta el script en un shell no interactivo (para obtener una explicación de la diferencia entre shells interactivos y no interactivos, consulte la sección pertinente de la Guía avanzada de scripting de Bash ). no hay terminal para obtener la entrada del usuario. Supongo que la gpgutilidad reconoce esto y omite la solicitud de contraseña (de lo contrario, su secuencia de comandos se bloquearía).

Sin embargo , debería poder canalizar su frase de contraseña a GPG dentro de dicha acción usando la --passphrase-fd 0opción (consulte la página de manual de gpg ), es decir,

echo "passphrase" |  gpg  --passphrase-fd 0 --output $outfile --decrypt /path/to/file.gpg

Puede almacenar de forma segura su frase de contraseña en el llavero de OS X y recuperarla desde allí. Aunque es posible a través de un script de shell (el blog de TextMate tiene detalles sobre cómo lograrlo ; asegúrese de leer los comentarios), hay tantas trampas que recomendaría usar un poco de AppleScript y la excelente aplicación Usable Keychain Scripting de Daniel Jalkut. . Una vez instalado, el siguiente fragmento de AppleScript recuperará su contraseña (suponiendo que el nombre de la cuenta sea "GPG"):

tell application "Usable Keychain Scripting" to get password of first generic item of current keychain whose account is "GPG"

O envuélvelo en un osascriptcomando de shell, es decir

passphrase=$(osascript -e '<command above>')

o, si usa Automator, agregue una acción de AppleScript, recupere la frase de contraseña que contiene y pásela al script de shell.