2015-05-01 10 views
5

Bir kabuk komut dosyası oluşturmak istiyorum ve daha önce bununla çalışmadım. bir komut gpg için vardır:GPG tuşu listede var mı?

gpg --keyserver SERVER --recv-keys KEY 

sorun anahtarı zaten eklenmiş eğer bu komutu çalıştırmak istediğiniz kalmamasıdır. Anahtarın anahtar listesinde mevcut olup olmadığını kontrol etmek için herhangi bir yöntem var mı? Teşekkür ederiz!

+0

'gpg -k' ile ilgili bir sorun mu var? –

+0

Yani: gpg -k | grep ANAHTARI – LosYear

+1

Bir fikir olur muydu? –

cevap

3

Run gpg --list-keys [key-id] (veya kısaltılmış komut -k) sahip olacak, Eşleşen bir anahtar varsa 0 (başarı) bir dönüş kodu veya başka bir şey (başarısızlık). Tüm anahtarlar ve grep listelerini daha sonra başkaları tarafından önerildiği gibi listelemeyin, bu anahtar içinde daha fazla sayıda anahtar için korkunç yavaş olacaktır. Eğer dönüş kodu yalnızca ilgilendiğiniz olarak muhtemelen, ilk gpg aramanın çıkışını (gpg --list-keys [key-id] >/dev/null 2>&1 || ...) atarak, eksik tuşları getirmesi

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

çalıştırın.

zaman zaman

  • güncellenmesi tuşları makul bir şey, revocations özellikle short key IDs should never be used
  • getirme mümkünse tüm parmak izi kullanmak için yapmanız olabileceğini unutmayın.
+0

' gpg - liste-tuşları'nın tüm yollarını listelemenin yoludur. – Jahid

+0

'gpg - liste tuşları, _currently keyring_'de bulunan tüm anahtarları listeler. Anahtar, başka herhangi bir anahtarlık içinde ise, bunu kullanmanıza yardımcı olmaz. 'apt-key list' sadece apt paketi yöneticisinin anahtarındaki anahtarları listeler - OP'nin yapmaya çalıştığı şey bu görünmez. –

+0

Bu konuda üzgünüm, OP'nin ihtiyacını yanlış anladım. – Jahid

1

Sen yapabilirsiniz:

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

Ek (apt anahtarlık için): apt-key kullanılabilir

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

Eğer

+0

"apt-key" işlevinin yalnızca "apt" paket yöneticisinin anahtarının üstünde çalıştığını ve kullanıcının değil, çalıştığını unutmayın. Bu, OP'nin yapmayı planladığı şey değil. –

+0

@JensErat, OP'nin niyetini yanlış yorumlamış gibi görünüyor. 'gpg --list-keys', – Jahid