diff options
Diffstat (limited to 'extras')
-rw-r--r-- | extras/Makefile.am | 3 | ||||
-rwxr-xr-x | extras/hook-scripts/S56glusterd-geo-rep-create-post.sh | 2 | ||||
-rw-r--r-- | extras/peer_add_secret_pub.in | 63 |
3 files changed, 67 insertions, 1 deletions
diff --git a/extras/Makefile.am b/extras/Makefile.am index e2b29f2da45..89f69440423 100644 --- a/extras/Makefile.am +++ b/extras/Makefile.am @@ -1,3 +1,6 @@ +gsyncddir = $(libexecdir)/glusterfs +gsyncd_SCRIPTS = peer_add_secret_pub + EditorModedir = $(docdir) EditorMode_DATA = glusterfs-mode.el glusterfs.vim diff --git a/extras/hook-scripts/S56glusterd-geo-rep-create-post.sh b/extras/hook-scripts/S56glusterd-geo-rep-create-post.sh index 8d3734e8097..067dd7427da 100755 --- a/extras/hook-scripts/S56glusterd-geo-rep-create-post.sh +++ b/extras/hook-scripts/S56glusterd-geo-rep-create-post.sh @@ -75,6 +75,6 @@ if [ -f $pub_file ]; then scp $pub_file $slave_ip:$pub_file_tmp ssh $slave_ip "mv $pub_file_tmp ${pub_file_dname}/${mastervol}_${slavevol}_${pub_file_bname}" ssh $slave_ip "gluster system:: copy file /geo-replication/${mastervol}_${slavevol}_common_secret.pem.pub > /dev/null" - ssh $slave_ip "gluster system:: execute add_secret_pub root $mastervol $slavevol > /dev/null" + ssh $slave_ip "gluster system:: execute add_secret_pub root geo-replication/${mastervol}_${slavevol}_common_secret.pem.pub > /dev/null" fi fi diff --git a/extras/peer_add_secret_pub.in b/extras/peer_add_secret_pub.in new file mode 100644 index 00000000000..e3a9aa2a48b --- /dev/null +++ b/extras/peer_add_secret_pub.in @@ -0,0 +1,63 @@ +#!/bin/bash + +user=$1 +pub_file=$2 + +if [ "$user" == "" ]; then + echo "Invalid User"; + exit 1; +fi + +if [ "$pub_file" == "" ]; then + echo "Invalid pub file"; + exit 1; +fi + +home_dir=`getent passwd $user | cut -d ':' -f 6`; + +if [ "$home_dir" == "" ]; then + echo "Invalid home dir"; + exit 1; +fi + +authorized_keys_file=$(cat /etc/ssh/sshd_config | \ + grep -e "^AuthorizedKeysFile" | \ + awk '{print $2}' | tail -1); + +# If not set, use default location +if [ "x$authorized_keys_file" == "x" ]; then + authorized_keys_file="%h/.ssh/authorized_keys" +fi + +# If default location +if [ "$authorized_keys_file" == ".ssh/authorized_keys" ]; then + authorized_keys_file="%h/$authorized_keys_file" +fi + +# Replace %u with user name (ex: /etc/ssh/keys/%u/authorized_keys) +authorized_keys_file="${authorized_keys_file//%u/$user}"; + +# Replace %h with home dir (ex: %h/.ssh/authorized_keys) +authorized_keys_file="${authorized_keys_file//%h/$home_dir}"; +ssh_dir=$(dirname $authorized_keys_file); + +if [ ! -d $ssh_dir ]; then + mkdir $ssh_dir; + chmod 700 $ssh_dir; + chown $user: $ssh_dir; +fi + +if [ ! -d $authorized_keys_file ]; then + touch $authorized_keys_file; + chmod 600 $authorized_keys_file; + chown $user: $authorized_keys_file; +fi + +# Add to authorized_keys file only if not exists already +while read line +do + grep -Fxq "$line" $authorized_keys_file; + [ $? -ne 0 ] && echo "$line" >> $authorized_keys_file; +done < "$GLUSTERD_WORKDIR"/$pub_file; + +exit 0; |