2015-05-01 10 views
5

Voglio creare uno script di shell e non ho ancora lavorato con esso. C'è un comando per gpg:La chiave GPG è presente nell'elenco?

gpg --keyserver SERVER --recv-keys KEY 

Il problema è che io non voglio eseguire questo comando se la chiave è già stato aggiunto. Esiste un metodo per verificare che la chiave esista nell'elenco delle chiavi? Grazie!

+0

Qualcosa non va con 'gpg -k'? –

+0

Vuoi dire: gpg -k | grep KEY? – LosYear

+1

Sarebbe un'idea, vero? –

risposta

3

Run gpg --list-keys [key-id] (o il comando abbreviato -k), che avrà un codice di ritorno di 0 (successo) se esiste una chiave corrispondente, o qualcos'altro (fallimento) altrimenti. Non elencare tutte le chiavi e successivamente grep come proposto da altri nei commenti, questo otterrà orribilmente lento per un numero maggiore di chiavi nel portachiavi. Eseguire

gpg --list-keys [key-id] || gpg --keyserver [server] --recv-keys [key-id] 

per andare a prendere le chiavi mancanti, possibilmente scartando l'uscita del primo gpg di chiamata (gpg --list-keys [key-id] >/dev/null 2>&1 || ...), come si è interessati solo il codice di ritorno.

essere consapevoli del fatto che

  • Aggiornamento delle chiavi di volta in volta potrebbe essere una cosa ragionevole da fare per andare a prendere revoche
  • soprattutto short key IDs should never be used, utilizzare l'intera impronta digitale, se possibile.
+0

' gpg --list-keys' non elenca tutte le chiavi. – Jahid

+0

'gpg --list-keys' elenca tutte le chiavi disponibili nel portachiavi _ attualmente usato. Se la chiave è in qualsiasi altro portachiavi, questo non ti aiuterà a usarlo. 'apt-key list' elenca solo le chiavi nel portachiavi del gestore pacchetti apt - questo non sembra essere ciò che l'OP sta cercando di fare. –

+0

scusa per questo, sembra che ho interpretato male la necessità dell'OP .. – Jahid

1

Si può fare:

[[ $(gpg --list-keys | grep -w KEY) ]] && echo "Key exists" || 
gpg --keyserver SERVER --recv-keys KEY 

supplementare (per portachiavi di APT):

[[ $(apt-key list | grep -w KEY) ]] && echo "Key exists" || 
gpg --keyserver SERVER --recv-keys KEY 

Se apt-key è disponibile

+0

Si noti che 'apt-key' funziona solo sul portachiavi del gestore pacchetti' apt', e non su quello dell'utente. Molto probabilmente questo non è ciò che l'OP intende fare. –

+0

@JensErat, sembra che abbia interpretato male l'intenzione di OP. 'gpg --list-keys' è la strada da percorrere – Jahid

Problemi correlati