This commit is contained in:
Rantanen Ville
2017-04-27 12:00:07 +03:00
commit a5ac6f0224
5 changed files with 214 additions and 0 deletions

91
build-run Executable file
View File

@@ -0,0 +1,91 @@
#!/bin/bash
function helpexit() {
echo "Start a Docker session with LXDE and VNC server."
echo "NOTE: Docker image is stopped and destroyed when ssh shell exits!"
echo " --vnc Start VNC viewer"
echo " --geometry WxY VNC Default screen size"
echo " --new-passwd Generate new random VNC password file"
echo " --help This help"
exit
}
function pwgen() {
dd if=/dev/random of=vnc_passwd bs=1 count=8
}
function rsagen() {
rm -f .id_rsa .id_rsa.pub
ssh-keygen -t rsa -b 1024 -N "" -f .id_rsa
}
for (( i=1; i<=$#; i++ )); do
j=$(( $i + 1 ))
[[ "${!i}" = "--help" ]] && helpexit
[[ "${!i}" = "-h" ]] && helpexit
[[ "${!i}" = "--vnc" ]] && { VNC=1; continue; }
[[ "${!i}" = "--new-passwd" ]] && { pwgen; continue; }
[[ "${!i}" = "--geometry" ]] && {
VNCSIZE="-geometry ${!j}";
[[ "$VNCSIZE" = *x* ]] || {
echo "VNC geometry must be of format WxH, e.g. 1024x768"
exit 1
}
continue;
}
done
set -e
[[ -f vnc_passwd ]] || pwgen
[[ -f .id_rsa.pub ]] || rsagen
[[ -f .id_rsa ]] || rsagen
cd $( dirname $( readlink -f $0 ) )
export USER=$( id -u -n )
export USERID=$( id -u )
export USERGID=$( id -u )
cat userinit.sh.template | \
sed 's,--USER--,'$USER',g' | \
sed 's,--USERID--,'$USERID',g' | \
sed 's,--USERGID--,'$USERGID',g' | \
sed 's,--PUBKEY--,'"$( cat .id_rsa.pub )"',' > userinit.sh
chmod 755 userinit.sh
image=$( basename $( dirname $( readlink -f $0 ) ) )
echo $image
docker build -t $image .
nname=$image$$
docker run --rm -v /mnt:/mnt -v /media:/media -v $HOME/:/host_home \
--privileged \
-h $nname --name $nname $image \
bash /bootstuff.sh $USER &
echo $nname
while :; do
sleep 3
IP=$( docker inspect --format '{{ .NetworkSettings.IPAddress }}' $nname )
[[ -z "$IP" ]] || break
done
echo $IP
while :; do
sleep 3
ssh-keyscan $IP && break
done
[[ "$VNC" -eq 1 ]] && {
ssh -i .id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $USER@$IP /home/$USER/bin/vncs "$VNCSIZE"
while :; do
wget -qO- ${IP}:5900 && break
sleep 5
done
vncviewer -passwd vnc_passwd ${IP}:5900 &> /dev/null &
}
ssh -i .id_rsa -XY -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $USER@$IP #&& break
echo "Shutting down $nname"
sleep 1
docker stop $nname >/dev/null &