2015-05-01 9 views
5

Ich möchte ein Shell-Skript erstellen, mit dem ich noch nicht gearbeitet habe. Es gibt einen Befehl für gpg:GPG-Schlüssel existiert in der Liste?

gpg --keyserver SERVER --recv-keys KEY 

Das Problem ist, dass ich nicht wollen, diesen Befehl auszuführen, wenn Schlüssel bereits hinzugefügt wurde. Gibt es eine Methode, um zu überprüfen, ob der Schlüssel in der Schlüsselliste existiert? Vielen Dank!

+0

Alles falsch mit 'gpg -k'? –

+0

Sie meinen: gpg -k | Grep SCHLÜSSEL? – LosYear

+1

Wäre eine Idee, oder? –

Antwort

3

Run gpg --list-keys [key-id] (oder der abgekürzten Befehl -k), die haben ein Rückgabecode von 0 (Erfolg), wenn ein passender Schlüssel existiert, oder sonst etwas (Fehler). Listen Sie nicht alle Schlüssel und grep danach, wie von anderen in den Kommentaren vorgeschlagen, dies wird schrecklich langsam für größere Zahlen von Schlüsseln im Schlüsselring erhalten. Führen

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

fehlende Schlüssel zu holen, möglicherweise das erste gpg Aufruf der Ausgang (gpg --list-keys [key-id] >/dev/null 2>&1 || ...) verwirft, wie Sie daran interessiert sind nur in den Return-Code sind.

Beachten Sie, dass

  • Aktualisierung Schlüssel von Zeit zu Zeit eine vernünftige Sache Widerruf zu tun sein könnte
  • besonders short key IDs should never be used, den gesamten Fingerabdruck wenn möglich nutzen zu holen.
+0

' gpg --list-keys' listet nicht alle Schlüssel auf. – Jahid

+0

'gpg --list-keys' listet alle Schlüssel auf, die im _currently using keyring_ verfügbar sind. Wenn sich der Schlüssel in einem anderen Schlüsselring befindet, hilft Ihnen dies nicht bei der Verwendung. 'apt-key list' wird nur Schlüssel im Schlüsselring des apt-Paketmanagers auflisten - dies scheint nicht das zu sein, was das OP versucht. –

+0

Entschuldigung, es scheint, dass ich OPs Bedürfnisse falsch interpretiert habe .. – Jahid

1

können Sie tun:

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

Zusatz (für APT-Keyring):

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

Wenn apt-key verfügbar ist

+0

Beachten Sie, dass "apt-key" nur auf dem Schlüsselring des Paketmanagers "apt" und nicht auf dem des Benutzers funktioniert. Dies ist sehr wahrscheinlich nicht das, was das OP beabsichtigt. –

+0

@JensErat, ich habe die Absicht von OP falsch interpretiert. 'gpg --list-keys' ist der Weg zu gehen – Jahid

Verwandte Themen