279b86f5c779a6bca6b02fb1d59b775210427c62
[packages/trusty/cirros-testvm.git] / cirros-testvm / src-cirros / src / usr / bin / ssh-import-id
1 #!/bin/sh
2
3 burl="https://launchpad.net/~%s/+sshkeys"                                       
4
5 Usage() {
6    cat <<EOF
7 Usage: ${0##*/} user1 [ user2 [ ... ] ]
8    Import ssh keys for the user from http://launchpad.net
9 EOF
10 }
11 [ $# -eq 0 ] && { Usage 1>&2; exit 1; }
12 [ "$1" = "-h" -o "$1" == "--help" ] && { Usage; exit 0; }
13 cd
14 umask 066
15 fail() { echo "$@" 1>&2; exit 1; }
16 mkdir -m 755 -p .ssh  || { fail "failed to make .ssh dir" 1>&2; exit 1; }
17
18 for u in "$@"; do
19         url=$(printf "$burl" "$u") &&
20                 out=$(curl --silent - "$url") ||
21                 fail "failed to get key for $u [$url]" 1>&2
22         # some keys come back with dos line end
23         out=$(echo "$out" | sed -e '/^$/d' -e '/^\r/d' \
24                         -e ':join /=[ ]/!{ N; s/[\n\r]//g ; b join }' \
25                          -e 's/[^a-zA-Z0-9@: .\/=+-]//g')
26         printf "%s\n" "$out" >> ".ssh/authorized_keys" ||
27                 fail "failed to write to .ssh/authorized_keys"
28         echo "Successfully authorized [$u]"
29 done
30
31 # vi: ts=4 noexpandtab