63 lines
1.4 KiB
Bash
Executable File
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
|
|
|