หนึ่งสามารถนำเข้าคีย์ด้วย:
รอบต่อนาที - นำเข้า / เส้นทาง / ถึง / สำคัญ
แต่คุณจะบอกได้อย่างไรถ้าคุณนำเข้ากุญแจนี้แล้ว พยายามที่จะนำเข้าอีกครั้งจะล้มเหลวด้วยข้อผิดพลาดและฉันพยายามหลีกเลี่ยงปัญหานี้ในขณะที่ฉันกำลังใช้ Puppet เพื่อติดตั้งคีย์
หนึ่งสามารถนำเข้าคีย์ด้วย:
รอบต่อนาที - นำเข้า / เส้นทาง / ถึง / สำคัญ
แต่คุณจะบอกได้อย่างไรถ้าคุณนำเข้ากุญแจนี้แล้ว พยายามที่จะนำเข้าอีกครั้งจะล้มเหลวด้วยข้อผิดพลาดและฉันพยายามหลีกเลี่ยงปัญหานี้ในขณะที่ฉันกำลังใช้ Puppet เพื่อติดตั้งคีย์
คำตอบ:
คุณสามารถตรวจสอบอีกครั้งว่ามีการนำเข้ากุญแจโดยใช้rpm -qi gpg-pubkey-<version>-<release>
หรือไม่ หากมีการติดตั้งไว้ rpm จะให้ข้อมูลทั้งหมดเกี่ยวกับมันถ้าไม่มันจะออกโดยมีค่าส่งคืน 1 ดังนั้นคุณสามารถเพิ่มunless
พารามิเตอร์สูตรสูตรหุ่นของคุณ:
exec { "rpm --import /path/to/package":
# ...
unless => "rpm -qi gpg-pubkey-<version>-<release> > /dev/null 2>&1"
}
KEYID=$(gpg --throw-keyids $KEYFILE | sed -n '/^pub/s|^[^/]*/\([[:alnum:]]*\) .*|\1|p' | tr [[:upper:]] [[:lower:]])
ที่สำคัญทุกคนที่นำเข้าเพิ่มรายการ rpmdb gpg-pubkey-<left(hex(fingerprint), 8)>-<encoded import date>
ของ เพียงตรวจสอบชื่อนั้น ( gpg-pubkey
) และรุ่นที่เหมาะสม (อักขระ 8 ตัวแรกของลายนิ้วมือคีย์เป็นเลขฐานสิบหก) ใน rpmdb
rpm -qi gpg-pubkey-FINGERPRINT-\* > /dev/null 2>&1
(การอ้างอิงรวมถึงวิธีรับFINGERPRINT
: robinbowes.com/article.php/20081107174415581 )
หากคุณเพียงต้องการตรวจสอบว่าคีย์ถูกนำเข้า (โดยไม่ต้องประมวลผลข้อมูลนี้โดยทางโปรแกรม) คุณสามารถแสดงรายการคีย์ทั้งหมดเช่นนี้:
rpm -qi gpg-pubkey-\* | grep -E ^Packager
หรือรหัส:
rpm -qi gpg-pubkey-\* | grep -E "^Version "
สิ่งนี้อาจดูเหมือนชัดเจนสำหรับคนจำนวนมาก แต่ฉันคิดว่าสำหรับบางคนมันเป็นคำตอบที่ตรงกว่า (อย่างน้อยบรรทัดแรกของ) คำถาม
KEYFILE=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release; KEYID=$(echo $(gpg --throw-keyids < $KEYFILE)|cut -c11-18|tr [A-Z] [a-z]); rpm -q gpg-pubkey-$KEYID