50 lines
1.3 KiB
Bash
50 lines
1.3 KiB
Bash
#!/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
|