#!/usr/bin/ksh 


HOMEDIR=/home/gagilent/
WORKDIR=$HOMEDIR/wm
TMPDIR=${WORKDIR}/tmp/ssh

NEWKEY=${TMPDIR}/new_authorized_keys
TMPHOSTS=${WORKDIR}/known_hosts.tmp

SSH_ARGS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=$KNOWN_HOSTS"

SiteList=${WORKDIR}/sitelist_all
#node_list=`cat /export/home2/mike/sitelist2 | sort`
node_list=`cat $SiteList | cut -d"," -f2 | sort -u`

if [ ! -d ${WORKDIR}/tmp ]; then mkdir ${WORKDIR}/tmp ; fi
if [ ! -d ${TMPDIR} ]; then mkdir ${TMPDIR} ; fi
if [ -f ${TMPDIR}/* ]; then rm ${TMPDIR}/* ; fi
if [ -f ${NEWKEY} ]; then rm ${NEWKEY} ; fi

function capture {
# Create and gather .pub key from all boxes
clear
echo "gathering .pub files"
for f in ${node_list} 
do
    shortname=`echo ${f} |cut -d'.' -f1`
    echo "$shortname  "
    cd ${TMPDIR}

    if ping $f -c 2 2>&1 >/dev/null
    then
        ssh $f  'if [ ! -d .ssh ]; then mkdir .ssh ; fi
                 if [ -d $HOME/.ssh ]; then chmod 755 $HOME/.ssh ; fi
                 rm .ssh/id*; 
                 ssh-keygen -q -t rsa  -P "" -f $HOME/.ssh/id_rsa'
           scp -q ${f}:.ssh/id_rsa.pub  ${TMPDIR}/${shortname}.rsa.pub
           cat ${TMPDIR}/${shortname}.rsa.pub | sed -e 's/$/.oss.sprint.com/' > ${TMPDIR}/${shortname}.rsa.new
           cat ${TMPDIR}/${shortname}.rsa.pub >> ${TMPDIR}/${shortname}.rsa.new
    else
        echo "skipping $shortname: not pingable"; echo
    fi
done
       # don't forget this box
           if [ ! -d .ssh ]; then mkdir .ssh ; fi
           if [ -d $HOME/.ssh ]; then chmod 755 $HOME/.ssh ; fi
           rm $HOME/.ssh/id*; 
           ssh-keygen -q -t rsa  -P "" -f $HOME/.ssh/id_rsa
           cp  $HOME/.ssh/id_rsa.pub  ${TMPDIR}/`hostname`.rsa.pub
           cat $HOME/.ssh/id_rsa.pub | sed -e 's/.oss.sprint.com//' > ${TMPDIR}/`hostname`.rsa.new
           cat $HOME/.ssh/id_rsa.pub >> ${TMPDIR}/`hostname`.rsa.new
}  # capture

function build {
# Create single authorized_keys2

  cd ${TMPDIR}
  for j in `ls *.new`
  do
     cat $j >> ${NEWKEY}
  done

  chmod 644 ${NEWKEY} 
}  # build

function push {
# Push out common authorized_keys2  #keys2 for solaris
echo
echo "pushing new keys"
   for k in ${node_list}
   do
       box=${k}.oss.sprint.com

       if ping $k -c 2 2>&1 >/dev/null
       then
           print $k
           scp -qp ${NEWKEY} ${k}:.ssh/authorized_keys2
#            ssh ${k} 'cd .ssh; scp -vp gagilent@172.19.161.129:.ssh/known_hosts .'
           scp -qp $HOME/.ssh/known_hosts  ${k}:.ssh/known_hosts
       else
           print "skipping $k: not pingable";
           print
       fi
   done
        # don't forget this box
           cp ${NEWKEY} $HOME/.ssh/authorized_keys2
} #push

# cleanup

######################
#eval `ssh-agent`
#ssh-add $HOME/.ssh/id_dsa

capture
build
push

#rm  ${TMPDIR}/*.pub
#rm  ${TMPDIR}/*.new

#if [ -f ${NEWKEY} ]; then rm ${NEWKEY} ; fi
#echo 
#echo
