First cut at a Python version of the automount script for ssh keys
[pl_sshd.git] / auto.pl_sshd
1 #!/bin/bash
2 #
3 # autofs(5) executable map for /var/pl_sshd/keys/
4 #
5 # Mark Huang <mlhuang@cs.princeton.edu>
6 # Copyright (C) 2004 The Trustees of Princeton University
7 #
8 # $Id: auto.pl_sshd,v 1.3 2004/10/04 22:20:11 mlhuang Exp $
9 #
10
11 usage()
12 {
13     echo "usage: $0 slice" >/dev/stderr
14     exit 1
15 }
16
17 [ -z "$1" ] && usage
18 slice="$1"
19
20 # Try real home directory first
21 eval home="~$slice"
22 if [ -f "$home/.ssh/authorized_keys" ] ; then
23     echo "--bind,-r :$home/.ssh"
24     exit 0
25 fi
26
27 # Try virtual server home directory next
28 vbase=/vservers/$slice
29 keyfile=/home/$slice/.ssh/authorized_keys
30
31 echo -n "Retrieving SSH keys for $slice... " >/dev/stderr
32
33 keydata=`curl -s \
34     --fail \
35     --max-time 15 \
36     "http://localhost:815/keys?slice=$slice"`
37
38 rc=$?
39 if [ "$rc" -ne 0 ] ; then
40     echo "curl failed with error $rc." >/dev/stderr
41     exit $rc
42 fi
43
44 # write the keyfile while running as the slice user, this prevents
45 # various potential exploits
46 su - $slice >/dev/null 2>&1 <<EOF
47 install -d -m 700 ${keyfile%/*}
48 touch $keyfile
49 chmod 600 $keyfile
50 echo $keydata >$keyfile
51 EOF
52
53 if [ "`cat $vbase$keyfile 2>/dev/null`" != "$keydata" ]; then
54     echo "unable to write $vbase$keyfile." >/dev/stderr
55     exit 1
56 fi
57
58 echo "succeeded." >/dev/stderr
59
60 echo "--bind,-r :$vbase/home/$slice/.ssh"
61 exit 0