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

2

Regularmente necesito descifrar un archivo cifrado en gpg (siempre lo 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 excelente. No es así en Automator. Seleccioné "Ejecutar script de shell", ignorar la entrada del script de shell, pegar el contenido del script (excepto la primera línea). TextEdit aparece con un archivo en blanco y GPG nunca le pide la contraseña. Intenté usar la ruta completa a GPG pero eso no lo hizo. No sé prácticamente nada de las acciones de Automator, por lo que el problema seguramente viene de mí.

Cualquier ayuda apreciada!

    
pregunta Dominique 30.04.2012 - 23:44

1 respuesta

4

La acción Automator "Ejecutar shell script" ejecuta el script en un shell no interactivo (para obtener una explicación de la diferencia entre shells interactivos y no interactivos, consulte sección pertinente de la Advanced Bash Scripting Guide ): simplemente no se habla, no hay terminal para obtener la entrada del usuario. Supongo que la utilidad gpg reconoce esto y omite la solicitud de contraseña (de lo contrario, su script se bloquearía).

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

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

Puedes guardar de forma segura tu 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 TextMate tiene detalles sobre cómo lograrlo - ser Asegúrese de leer los comentarios), hay tantos errores que recomiendo usar un poco de AppleScript y el excelente Usable Keychain Scripting . Una vez instalado, el siguiente bit de AppleScript recuperará su contraseña (asumiendo que el nombre de la cuenta es "GPG"):

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

O bien envuélvalo en un comando de shell osascript , es decir,

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

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

    
respondido por el kopischke 01.05.2012 - 00:26

Lea otras preguntas en las etiquetas