Esecuzione di uno script gpg per decrittografare un file tramite Automator

2

Ho regolarmente bisogno di decodificare un file crittografato con gpg (sempre lo stesso) per visualizzarlo semplicemente in TextEdit. Ho uno script di shell molto semplice per questo. Sembra così:

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

Quando corri dal terminale, tutto va bene. GPG chiede la mia passphrase in una finestra pop-up, TextEdit appare, il file temp è cancellato e tutto è ottimo. Non così in Automator. Seleziono "Esegui Shell Script", ignoro l'input dello script della shell, incollo il contenuto dello script (eccetto per la prima riga). TextEdit si apre con un file vuoto e GPG non richiede mai la passphrase. Ho provato a utilizzare il percorso completo per GPG ma non l'ho fatto. Non conosco praticamente nulla delle azioni di Automator, quindi il problema viene sicuramente da me.

Qualsiasi aiuto apprezzato!

    
posta Dominique 30.04.2012 - 23:44
fonte

1 risposta

4

L'azione "Esegui script shell" di Automator esegue lo script in una shell non interattiva (per una spiegazione della differenza tra shell interattive e non interattive, vedi sezione pertinente della Guida avanzata di scripting di Bash ) - non c'è, semplicemente parlato, nessun terminale da cui ricevere input da parte dell'utente. Suppongo che l'utility gpg lo riconosca e salta la richiesta della password (altrimenti il tuo script si bloccherebbe).

Dovresti essere in grado di reindirizzare la passphrase a GPG all'interno di tale azione utilizzando l'opzione --passphrase-fd 0 (vedi pagina man di gpg ), tuttavia, ovvero

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

È possibile memorizzare in modo sicuro la passphrase nel portachiavi di OS X e recuperarla da lì. Sebbene possibile tramite uno script di shell (il blog di TextMate ha dettagli su come ottenerlo - be sicuro di leggere i commenti), ci sono così tanti trucchi che mi piacerebbe usare un po 'di AppleScript e l'eccellente Usable Keychain Scripting app. Una volta installato, il seguente bit di AppleScript recupererà la tua password (supponendo che il nome dell'account sia "GPG"):

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

O avvolgilo in un comando di shell osascript , cioè

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

oppure, mentre stai usando Automator, aggiungi un'azione AppleScript, recupera la passphrase al suo interno e passa allo script della shell.

    
risposta data 01.05.2012 - 00:26
fonte

Leggi altre domande sui tag