openkubsd/bin/connect.sh
2023-06-14 13:37:48 +02:00

63 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
if [ -z "$1" ]
then
echo "Pick an host:"
awk '/.kube/ { print " - "$2 }' /etc/hosts
exit 0
fi
HOST="${1}"
if echo "$HOST" | grep -v kube$
then
HOST="${HOST}.kube"
fi
if ! grep "$HOST" /etc/hosts >/dev/null
then
echo "$HOST doesn't exist"
exit 1
fi
doas ./start_kube.sh "${HOST%.kube}"
if ! echo polling-port | nc -w 1$HOST 22 >/dev/null 2>/dev/null
then
printf "waiting 30s"
for i in $(seq 1 30)
do
echo polling-port | nc -w 1 $HOST 22 >/dev/null 2>/dev/null && break
printf "."
sleep 1
if ! vmctl show ${HOST%.kube} | grep running >/dev/null
then
printf "\n$HOST isn't running"
exit 1
fi
done
fi
ID=$(vmctl show "${HOST%.kube}" | awk 'END { print $2 }')
# uncomment to set a dedicated X server per program
ID="${ID}$(( $(date +%s) % 3600))"
ssh-keygen -R "$HOST" >/dev/null 2>/dev/null
if [ -n "$DISPLAY" ]
then
PROG="${2:-xterm}"
VM_INFO="$$ $HOST $ID $PROG"
echo "$VM_INFO" >> /tmp/kubes.txt
Xephyr -xkb-layout fr -once -terminate 1 -title "[${HOST}] - ${PROG}" -resizeable -reset -br ":${ID}" &
export DISPLAY=":${ID}"
ssh -o StrictHostKeyChecking=no -Y "user@${HOST}" "stumpwm" &
WAIT_FOR=$!
ssh -o StrictHostKeyChecking=no -Y "user@${HOST}" "${PROG}"
wait $WAIT_FOR
kill $(jobs -p)
sed -i "/^$$/d" /tmp/kubes.txt
fi