initial
This commit is contained in:
91
build-run
Executable file
91
build-run
Executable 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 &
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user