diff options
author | Jonas Smedegaard <dr@jones.dk> | 2008-03-20 10:41:15 +0000 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2008-03-20 10:41:15 +0000 |
commit | 8c9ecea6139667e5d9fc8c9c5a2b1720a1f9d9cb (patch) | |
tree | 04d7f1b626c45880846a78a475acd00eab1fe136 /add-apt-key | |
parent | 2d946b51b50a3b0b29439c009b1440804dad4372 (diff) |
New script to add keys to APT.
Diffstat (limited to 'add-apt-key')
-rwxr-xr-x | add-apt-key | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/add-apt-key b/add-apt-key new file mode 100755 index 0000000..7a523a0 --- /dev/null +++ b/add-apt-key @@ -0,0 +1,78 @@ +#!/bin/sh + +# Author: Tom Marble <tom.marble@sun.com> +# License: GPLv2 +# Origin: https://add-apt-key.dev.java.net/ + +PROGRAM=add-apt-key +# KEYSERVER=pgp.mit.edu +KEYSERVER=subkeys.pgp.net +verbose="" + +error () { + local err="$1" + shift + echo "$*" + exit $err +} + +usage () { + rv=$1 + cat >&2 <<EOF +usage: $PROGRAM [-h|--help] [-v|--verbose] [-k|--keyserver name] key-id +EOF + exit $rv +} + +vecho () { + [ -z "$verbose" ] || echo >&2 "$@" +} + +vcmd () { + vecho $* + $* +} + +if [ -x /usr/bin/id ] && [ `id -u` -ne 0 ]; then + error 1 "$PROGRAM can only run as root" +fi + +if [ -e /etc/default/add-apt-key ]; then + . /etc/default/add-apt-key +fi + +keyid="" +while [ "$#" -gt 0 ]; do + case "$1" in + -v|--verbose) + verbose=yes;; + -h|--help) + usage 0;; + -k|--keyserver) + [ "$#" -gt 1 ] || usage 1 + KEYSERVER=$2 + shift;; + -*) + usage 1;; + *) + [ -z "$keyid" ] || usage 1 + keyid="$1" + ;; + esac + shift +done + +[ "$#" -eq 0 ] || usage 1 +[ -n "$keyid" ] || usage 1 + +vecho "requesting key $keyid from $KEYSERVER ..." +vcmd gpg --keyserver $KEYSERVER --recv-keys $keyid +[ "$?" -eq 0 ] || error 3 "key $keyid not found" + +vecho "adding $keyid to APT key ring ..." +vcmd gpg --armor --export $keyid | apt-key add - +[ "$?" -eq 0 ] || error 4 "unable to add key $keyid to apt-key ring" + +vecho "done" + +exit 0 |