libreschool-client-manager/root/etc/e-smith/events/actions/client-adopt

48 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
)
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