TiledViz
Loading...
Searching...
No Matches
start8.sh
1#!/bin/sh
2
3RESOL=3840x2160
4
5ARGS=$@
6#echo ${ARGS[@]}
7
8#1920x1080
9myUID=1000
10myGID=1000
11myPORT=55555
12myFront=localhost
13if [ -z "$1" ]; then
14 echo Usage: $0 [-r RESOL_XxRESOL_Y] -u UID [-g GID] -p PORTserver -h Frontend
15 exit 1
16else
17 IFS=' ' read -ra ADDR <<< "$ARGS"
18 lenADDR=${#ADDR[@]}
19 if [ ${lenADDR} -gt 0 ]; then
20 i=0
21 while [ $i -lt ${lenADDR} ]; do
22 case "${ADDR[$i]}" in
23 '-r')
24 RESOL=${ADDR[$((i+1))]};;
25 '-u')
26 myUID=${ADDR[$((i+1))]};;
27 '-g')
28 myGID=${ADDR[$((i+1))]};;
29 '-p')
30 myPORT=${ADDR[$((i+1))]};;
31 '-h')
32 myFront=${ADDR[$((i+1))]};;
33 '.*')
34 myGID=${myUID}
35 esac
36 i=$((i+2));
37 done
38fi
39fi
40
41
42groupadd -g ${myGID} myuser
43useradd -r -u ${myUID} -g myuser myuser
44HOME_user=/home/myuser
45if [ -d ${HOME_user} ]; then
46 mkdir -p ${HOME_user}/.vnc
47fi
48chmod 700 ${HOME_user}/.vnc
49chown -R myuser:myuser ${HOME_user}
50
51chmod 600 ${HOME_user}/.ssh/config
52
53LOGFILE=${HOME_user}/.vnc/log
54touch $LOGFILE
55chown myuser:myuser $LOGFILE
56
57echo "start.sh with args : ${ARGS[*]}" >> $LOGFILE
58
59export LD_LIBRARY_PATH=/usr/local/lib64:/usr/lib64
60if ! [ -e ${HOME_user}/.vnc/passwd ]; then
61 if [ -z "$VNC_PASSWORD" ]; then
62 choose() { echo -n ${1:$((RANDOM%${#1})):1}; }
63 password=$({
64 for i in $(seq 1 8); do
65 choose "-._+0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
66 done
67 })
68 echo Random Password Generated: $password |tee -a $LOGFILE
69 echo "$password" |xargs -I@ x11vnc -storepasswd @ ${HOME_user}/.vnc/passwd
70 else
71 echo "$VNC_PASSWORD" |xargs -I@ x11vnc -storepasswd @ ${HOME_user}/.vnc/passwd
72 fi
73 chmod 600 ${HOME_user}/.vnc/passwd
74
75 sleep 1
76else
77 echo Random Password Generated: $(x11vnc -showrfbauth ${HOME_user}/.vnc/passwd |tail -1 |sed -e 's/.*pass: //' ) |tee -a $LOGFILE
78fi
79chown -R myuser:myuser ${HOME_user}
80
81# Change ldconfig paths if no nvidia device
82if [ ! -e /dev/nvidia0 ]; then
83 rm -f /etc/ld.so.conf.d/GL.conf
84 ldconfig
85fi
86
87echo "allowed_users = anybody" >> /etc/X11/Xwrapper.config
88#mknod -m 666 /dev/tty16 c 5 0
89
90echo "start X "
91
92xvfbLockFilePath="/tmp/.X1-lock"
93if [ -f "${xvfbLockFilePath}" ]
94then
95 echo "Removing xvfb lock file '${xvfbLockFilePath}'..."
96 if ! rm -v "${xvfbLockFilePath}"
97 then
98 echo "Failed to remove xvfb lock file" 1>&2
99 exit 1
100 fi
101fi
102
103echo "export HOSTNAME="${HOSTNAME} >> /etc/profile.d/env_variable.sh
104
105# Set defaults if the user did not specify envs.
106export DISPLAY=:1
107#${XVFB_DISPLAY:-:1}
108screen=${XVFB_SCREEN:-0}
109resolution=${XVFB_RESOLUTION:-${RESOL}x24}
110timeout=${XVFB_TIMEOUT:-5}
111
112# Create the xstartup file
113echo "#!/bin/bash
114source ~/.bashrc
115export DISPLAY=$DISPLAY
116sleep 1
117stty sane
118export TERM=linux
119xterm -rv -geometry ${RESOL}-0-0 -e /opt/client_python ${DOCKERID} ${myPORT} ${myFront} &
120
121sleep 1
122icewm-light
123xterm
124#unset SESSION_MANAGER
125#unset DBUS_SESSION_BUS_ADDRESS
126" >${HOME_user}/.vnc/xstartup
127chmod 755 ${HOME_user}/.vnc/xstartup
128
129chown -R myuser:myuser ${HOME_user}
130
131echo export DOCKERID=$DOCKERID >> ${HOME_user}/.bashrc
132
133
134cd
135echo $( hostname )
136su - myuser -c " Xvfb ${DISPLAY} -screen ${screen} ${resolution} &"
137loopCount=0
138until xdpyinfo -display ${DISPLAY} > /dev/null 2>&1
139do
140 loopCount=$((loopCount+1))
141 sleep 1
142 if [ ${loopCount} -gt ${timeout} ]
143 then
144 echo "xvfb failed to start" 1>&2
145 exit 1
146 fi
147done
148
149chown -R myuser:myuser ${HOME_user}
150
151su - myuser -l -c "${HOME_user}/.vnc/xstartup "
152