mirror of https://github.com/apache/cloudstack.git
resolved fixed: 8853
update to handle multiple NICs and non-virtual-networking cases.
This commit is contained in:
parent
3395c566f9
commit
69c4a59696
|
|
@ -1,49 +1,73 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Init file for SSH Public Keys Download Client
|
||||
#
|
||||
# chkconfig: 345 98 02
|
||||
# description: SSH Public Keys Download Client
|
||||
|
||||
# Modify this line to specify the user (default is root)
|
||||
user=ubuntu
|
||||
|
||||
|
||||
# Get DomR Ip
|
||||
DOMR_IP=$(ip route | grep default | cut -d' ' -f3)
|
||||
|
||||
if [ ! -n "$DOMR_IP" ]
|
||||
then
|
||||
echo "DomR IP address not found. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get ssh public key
|
||||
homedir=$(grep ^$user /etc/passwd|awk -F ":" '{print $6}')
|
||||
sshdir=$homedir/.ssh
|
||||
authorized=$sshdir/authorized_keys
|
||||
publickey=$(wget -t 3 -T 20 -O - http://$DOMR_IP/latest/public-keys 2>/dev/null)
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Error receiving SSH public key. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
if [ ! -e $sshdir ]
|
||||
then
|
||||
mkdir $sshdir
|
||||
fi
|
||||
|
||||
if [ ! -e $authorized ]
|
||||
then
|
||||
touch $authorized
|
||||
fi
|
||||
|
||||
cat $authorized|grep -v "$publickey" > $authorized
|
||||
echo "$publickey" >> $authorized
|
||||
|
||||
|
||||
exit 0
|
||||
|
||||
#!/bin/bash
|
||||
#
|
||||
# Init file for SSH Public Keys Download Client
|
||||
#
|
||||
# chkconfig: 345 98 02
|
||||
# description: SSH Public Keys Download Client
|
||||
|
||||
# Modify this line to specify the user (default is root)
|
||||
user=root
|
||||
|
||||
|
||||
|
||||
# Add your DHCP lease folders here
|
||||
DHCP_FOLDERS="/var/lib/dhclient/* /var/lib/dhcp3/*"
|
||||
keys_received=0
|
||||
file_count=0
|
||||
|
||||
for DHCP_FILE in $DHCP_FOLDERS
|
||||
do
|
||||
if [ -f $DHCP_FILE ]
|
||||
then
|
||||
file_count=$((file_count+1))
|
||||
SSHKEY_SERVER_IP=$(grep dhcp-server-identifier $DHCP_FILE | tail -1 | awk '{print $NF}' | tr -d '\;')
|
||||
|
||||
if [ -n $SSHKEY_SERVER_IP ]
|
||||
then
|
||||
logger -t "cloud" "Sending request to ssh key server at $SSHKEY_SERVER_IP"
|
||||
|
||||
publickey=$(wget -t 3 -T 20 -O - http://$SSHKEY_SERVER_IP/latest/public-keys 2>/dev/null)
|
||||
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
logger -t "cloud" "Got response from server at $SSHKEY_SERVER_IP"
|
||||
keys_received=1
|
||||
break
|
||||
fi
|
||||
else
|
||||
logger -t "cloud" "Could not find ssh key server IP in $DHCP_FILE"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# did we find the keys anywhere?
|
||||
if [ "$keys_received" == "0" ]
|
||||
then
|
||||
logger -t "cloud" "Failed to get ssh keys from any server"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# set ssh public key
|
||||
homedir=$(grep ^$user /etc/passwd|awk -F ":" '{print $6}')
|
||||
sshdir=$homedir/.ssh
|
||||
authorized=$sshdir/authorized_keys
|
||||
|
||||
|
||||
if [ ! -e $sshdir ]
|
||||
then
|
||||
mkdir $sshdir
|
||||
fi
|
||||
|
||||
if [ ! -e $authorized ]
|
||||
then
|
||||
touch $authorized
|
||||
fi
|
||||
|
||||
cat $authorized|grep -v "$publickey" > $authorized
|
||||
echo "$publickey" >> $authorized
|
||||
|
||||
|
||||
exit 0
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue