#!/bin/bash EVENT="$1" HOST="$2" USER="$3" PASS="$4" HOST_IN_DB=$(db hosts show "$HOST" >/dev/null && echo yes) if [[ "$HOST_IN_DB" = "" ]] ; then echo "Host '$HOST' not in DB (or not registered)" exit 1 fi ping -c1 "$HOST" >/dev/null || ( echo "Can't ping $HOST" exit 1 ) ssh-keygen -R "${HOST}" sshpass -p "${PASS}" ssh -t -o StrictHostKeyChecking=no "${USER}@${HOST}" "whoami" || ( echo "Can't login to $HOST as $USER" exit 1 ) SUDO=$(sshpass -p "${PASS}" ssh -t -o StrictHostKeyChecking=no "${USER}@${HOST}" "which sudo") if [[ "$SUDO" = "" ]] ; then echo "Sudo not present in $HOST" exit 1 fi AMIROOT=$(sshpass -p "${PASS}" ssh -t -o StrictHostKeyChecking=no "${USER}@${HOST}" "echo '${PASS}' | sudo -S whoami") if [[ "$AMIROOT" = "" ]]; then echo "Not enough privileges for $HOST" exit 1 fi PUB=$(db configuration getprop client-manager ManagementKeyFile) cat $PUB | \ sshpass -p "${PASS}" ssh -t -o StrictHostKeyChecking=no "${USER}@${HOST}" "echo '${PASS}' | sudo -S mkdir /root/.ssh >/dev/null ; sudo tee -a /root/.ssh/authorized_keys" PRIV=$(db configuration getprop client-manager ManagementPrivateKeyFile) ssh -t -o StrictHostKeyChecking=no -i $PRIV "root@${HOST}" "whoami" || ( echo "Something went wrong" exit 1 ) db hosts setprop ${HOST} sshUser root