| rev | 
   line source | 
| 
devi@0
 | 
     1 #!/bin/sh
 | 
| 
devi@0
 | 
     2 
 | 
| 
devi@0
 | 
     3 # Use -d to deinstall labmaker
 | 
| 
devi@0
 | 
     4 # You can specify directory list to install LabMaker as command line parameters
 | 
| 
devi@0
 | 
     5 # or set it in $users_to_install variable
 | 
| 
devi@0
 | 
     6 
 | 
| 
devi@0
 | 
     7 # CONFIGURABLE SECTION start
 | 
| 
devi@0
 | 
     8 #users_to_install="/home/your-user-here /root"
 | 
| 
devi@0
 | 
     9 # CONFIGURABLE SECTION stop
 | 
| 
devi@0
 | 
    10 
 | 
| 
devi@0
 | 
    11 first_lab=T1
 | 
| 
devi@0
 | 
    12 editors_to_install='/bin/vi /usr/bin/vi /usr/bin/vim /bin/ee /usr/bin/ee /usr/bin/pico /usr/bin/nano /usr/local/bin/vim'
 | 
| 
devi@0
 | 
    13 temp_file=/tmp/lm-install-$$
 | 
| 
devi@0
 | 
    14 arg=$@
 | 
| 
devi@0
 | 
    15 
 | 
| 
devi@0
 | 
    16 show_usage()
 | 
| 
devi@0
 | 
    17 {
 | 
| 
devi@0
 | 
    18 	cat << USAGE 
 | 
| 
devi@0
 | 
    19 
 | 
| 
devi@0
 | 
    20 $0 [-d] path...
 | 
| 
devi@0
 | 
    21 
 | 
| 
devi@0
 | 
    22 	* Use -d to deinstall labmaker
 | 
| 
devi@0
 | 
    23 	* You can specify directory list to install LabMaker as command line parameters
 | 
| 
devi@0
 | 
    24 	  or set it in \$users_to_install variable in the script
 | 
| 
devi@0
 | 
    25 
 | 
| 
devi@0
 | 
    26 Example:
 | 
| 
devi@0
 | 
    27 
 | 
| 
devi@0
 | 
    28 	Command
 | 
| 
devi@0
 | 
    29 	# $0 /root /home/user
 | 
| 
devi@0
 | 
    30 	installs labmaker to /root and /home/user directories 
 | 
| 
devi@0
 | 
    31 
 | 
| 
devi@0
 | 
    32 USAGE
 | 
| 
devi@0
 | 
    33 }
 | 
| 
devi@0
 | 
    34 
 | 
| 
devi@0
 | 
    35 install_to_profile()
 | 
| 
devi@0
 | 
    36 {
 | 
| 
devi@0
 | 
    37 	profile=$1
 | 
| 
devi@65
 | 
    38 	cat <<'LM_bash_profile' > $temp_file
 | 
| 
devi@32
 | 
    39 # LabMaker:START
 | 
| 
devi@32
 | 
    40 /usr/local/bin/l3-agent
 | 
| 
devi@32
 | 
    41 # LabMaker:END
 | 
| 
devi@0
 | 
    42 LM_bash_profile
 | 
| 
devi@65
 | 
    43 	cat $profile \
 | 
| 
devi@65
 | 
    44 		| sed '/LabMaker:START/,/LabMaker:END/ d' \
 | 
| 
devi@65
 | 
    45 		>> $temp_file
 | 
| 
devi@0
 | 
    46 	cat $temp_file > $profile
 | 
| 
devi@0
 | 
    47 	rm $temp_file
 | 
| 
devi@0
 | 
    48 }
 | 
| 
devi@0
 | 
    49 
 | 
| 
devi@0
 | 
    50 uninstall_from_profile()
 | 
| 
devi@0
 | 
    51 {
 | 
| 
devi@0
 | 
    52 	profile=$1
 | 
| 
devi@0
 | 
    53 	cat $profile \
 | 
| 
devi@0
 | 
    54 		| sed '/LabMaker:START/,/LabMaker:END/ d' \
 | 
| 
devi@0
 | 
    55 		> $temp_file
 | 
| 
devi@0
 | 
    56 	cat $temp_file > $profile
 | 
| 
devi@0
 | 
    57 	rm $temp_file
 | 
| 
devi@0
 | 
    58 }
 | 
| 
devi@0
 | 
    59 
 | 
| 
devi@0
 | 
    60 install_to_bashrc()
 | 
| 
devi@0
 | 
    61 {
 | 
| 
devi@0
 | 
    62 	profile=$1
 | 
| 
devi@0
 | 
    63 	cat $profile \
 | 
| 
devi@0
 | 
    64 		| sed '/LabMaker:START/,/LabMaker:END/ d' \
 | 
| 
devi@0
 | 
    65 		> $temp_file
 | 
| 
devi@0
 | 
    66 	cat <<'LM_bash_profile' >> $temp_file
 | 
| 
devi@27
 | 
    67 # LabMaker:START
 | 
| 
devi@32
 | 
    68 LMHOME=~/.lilalo
 | 
| 
devi@27
 | 
    69 mkdir -p ${LMHOME}
 | 
| 
devi@0
 | 
    70 
 | 
| 
devi@27
 | 
    71 uname -a | grep -qi bsd && bsd=yes
 | 
| 
devi@27
 | 
    72 flush="-f"			#linux
 | 
| 
devi@27
 | 
    73 [ -n "$bsd" ] && flush="-t 0"	#freebsd
 | 
| 
devi@17
 | 
    74 
 | 
| 
devi@27
 | 
    75 tty=`tty` 
 | 
| 
devi@27
 | 
    76 this_term=`w | grep "${tty##/dev/}" | awk '{print $8;}'`
 | 
| 
devi@27
 | 
    77 # freeBSD: 
 | 
| 
devi@27
 | 
    78 [ -n "$bsd" ] && this_term=`w | grep "${tty##/dev/tty}" | awk '{print $6;}'`
 | 
| 
devi@17
 | 
    79 
 | 
| 
devi@16
 | 
    80 
 | 
| 
devi@27
 | 
    81 export PS1='\[`	
 | 
| 
devi@27
 | 
    82 	a="$?";
 | 
| 
devi@27
 | 
    83 	HIDDEN=$([ "$a" = 0 ] || echo -n ^"$a")$(echo -n _${UID}_)$(echo -n _$$_)$(date\
 | 
| 
devi@27
 | 
    84 		+"%j$(cat ${LMHOME}/lab 2>/dev/null) %H:%M:%S");
 | 
| 
devi@27
 | 
    85 	echo $HIDDEN`\033[50D\033[K\][\u@\h:\W]\$ '
 | 
| 
devi@16
 | 
    86 
 | 
| 
devi@27
 | 
    87 if [ -n "$this_term" ] && echo $this_term | grep -qv script
 | 
| 
devi@27
 | 
    88 then	
 | 
| 
devi@27
 | 
    89 	session_id=${tty##*/}-$$
 | 
| 
devi@27
 | 
    90 	parent=`cat /proc/$PPID/cmdline 2> /dev/null`
 | 
| 
devi@27
 | 
    91 	system=`uname -rs`
 | 
| 
devi@27
 | 
    92 	login_from=`who | grep "${tty##/dev/}" | awk '{print $6;}' | tr -d '()'`
 | 
| 
devi@39
 | 
    93 	#[ -n "$bsd" ] && login_from="" #FIXME!
 | 
| 
devi@27
 | 
    94 	start_time=`date +%s`
 | 
| 
devi@38
 | 
    95 	hostname=`hostname -f 2> /dev/null`
 | 
| 
devi@38
 | 
    96 	[ -n "$bsd" ] && hostname=`hostname`
 | 
| 
devi@16
 | 
    97 
 | 
| 
devi@27
 | 
    98 	cat <<INFO > $LMHOME/${session_id}.info
 | 
| 
devi@27
 | 
    99 <session>
 | 
| 
devi@32
 | 
   100 <local_session_id>$session_id</local_session_id>
 | 
| 
devi@27
 | 
   101 <hostname>$hostname</hostname>
 | 
| 
devi@27
 | 
   102 <user>$USER</user>
 | 
| 
devi@65
 | 
   103 <uid>$UID</uid>
 | 
| 
devi@27
 | 
   104 <login_from>$login_from</login_from>
 | 
| 
devi@27
 | 
   105 <tty>$tty</tty>
 | 
| 
devi@27
 | 
   106 <system>$system</system>
 | 
| 
devi@27
 | 
   107 <parent>$parent</parent>
 | 
| 
devi@27
 | 
   108 <ppid>$PPID</ppid>
 | 
| 
devi@27
 | 
   109 <pid>$$</pid>
 | 
| 
devi@27
 | 
   110 <start_time>$start_time</start_time>
 | 
| 
devi@27
 | 
   111 </session>
 | 
| 
devi@27
 | 
   112 INFO
 | 
| 
devi@27
 | 
   113 
 | 
| 
devi@27
 | 
   114 	exec script $flush -q $LMHOME/${session_id}.script
 | 
| 
devi@27
 | 
   115 fi
 | 
| 
devi@27
 | 
   116 # LabMaker:END 
 | 
| 
devi@0
 | 
   117 LM_bash_profile
 | 
| 
devi@0
 | 
   118 	cat $temp_file > $profile
 | 
| 
devi@0
 | 
   119 	rm $temp_file
 | 
| 
devi@0
 | 
   120 }
 | 
| 
devi@0
 | 
   121 
 | 
| 
devi@0
 | 
   122 uninstall_from_bashrc()
 | 
| 
devi@0
 | 
   123 {
 | 
| 
devi@0
 | 
   124 	profile=$1
 | 
| 
devi@0
 | 
   125 	cat $profile \
 | 
| 
devi@0
 | 
   126 		| sed '/LabMaker:START/,/LabMaker:END/ d' \
 | 
| 
devi@0
 | 
   127 		> $temp_file
 | 
| 
devi@0
 | 
   128 	cat $temp_file > $profile
 | 
| 
devi@0
 | 
   129 	rm $temp_file
 | 
| 
devi@0
 | 
   130 }
 | 
| 
devi@0
 | 
   131 
 | 
| 
devi@0
 | 
   132 install_editor()
 | 
| 
devi@0
 | 
   133 {
 | 
| 
devi@0
 | 
   134 editor=$1
 | 
| 
devi@0
 | 
   135 [ -e $editor.orig ] && cp $editor.orig $editor
 | 
| 
devi@0
 | 
   136 cp $editor $editor.orig
 | 
| 
devi@0
 | 
   137 cat <<'editor_wrapper' | sed "s@EDITOR@$editor@" > $editor
 | 
| 
devi@0
 | 
   138 #!/bin/sh
 | 
| 
devi@0
 | 
   139 
 | 
| 
devi@32
 | 
   140 LMHOME=~/.lilalo
 | 
| 
devi@0
 | 
   141 if [ "${1#-}" = "$1" -a -d "$LMHOME" ]
 | 
| 
devi@0
 | 
   142 then
 | 
| 
devi@0
 | 
   143 	LAB=`cat $LMHOME/lab`
 | 
| 
devi@0
 | 
   144 	TIME="`date +%j${LAB}_%H:%M:%S`"
 | 
| 
devi@0
 | 
   145 	DIR=""
 | 
| 
devi@0
 | 
   146 	[ "${1#/}" = "$1" ] && DIR=$PWD/
 | 
| 
devi@0
 | 
   147 	DIFFNAME=$PPID_${TIME}_`echo $DIR$1| sed s@_@__@ | sed 's@/@_@g'`.diff
 | 
| 
devi@0
 | 
   148 	tmp="/tmp/lm-saved-$$"
 | 
| 
devi@0
 | 
   149 	touch $1
 | 
| 
devi@0
 | 
   150 	cp -- "$1" $tmp 2> /dev/null
 | 
| 
devi@0
 | 
   151 	EDITOR.orig "$@" || ERR=1
 | 
| 
devi@0
 | 
   152 	diff $tmp $1 > $LMHOME/$DIFFNAME 2> /dev/null
 | 
| 
devi@0
 | 
   153 	rm $tmp 2> /dev/null
 | 
| 
devi@0
 | 
   154 	if [ "$ERR" = 1 ]
 | 
| 
devi@0
 | 
   155 	then
 | 
| 
devi@0
 | 
   156 		false
 | 
| 
devi@0
 | 
   157 	else
 | 
| 
devi@0
 | 
   158 		true
 | 
| 
devi@0
 | 
   159 	fi	
 | 
| 
devi@0
 | 
   160 else
 | 
| 
devi@0
 | 
   161 	exec EDITOR.orig "$@"
 | 
| 
devi@0
 | 
   162 fi
 | 
| 
devi@0
 | 
   163 editor_wrapper
 | 
| 
devi@0
 | 
   164 
 | 
| 
devi@0
 | 
   165 }
 | 
| 
devi@0
 | 
   166 
 | 
| 
devi@0
 | 
   167 
 | 
| 
devi@0
 | 
   168 uninstall_editor()
 | 
| 
devi@0
 | 
   169 {
 | 
| 
devi@0
 | 
   170 	editor=$1
 | 
| 
devi@0
 | 
   171 	[ -e $editor.orig ] && mv $editor.orig $editor
 | 
| 
devi@0
 | 
   172 }
 | 
| 
devi@0
 | 
   173 
 | 
| 
devi@0
 | 
   174 if [ "$1" != "-d" ] 
 | 
| 
devi@0
 | 
   175 then 
 | 
| 
devi@0
 | 
   176 	# INSTALLING LM
 | 
| 
devi@0
 | 
   177 	if [ $# -gt 0 ] 
 | 
| 
devi@0
 | 
   178 	then
 | 
| 
devi@0
 | 
   179 		users_to_install="$*"
 | 
| 
devi@0
 | 
   180 	fi
 | 
| 
devi@0
 | 
   181 
 | 
| 
devi@0
 | 
   182 	if [ -z "$users_to_install" ]
 | 
| 
devi@0
 | 
   183 	then 
 | 
| 
devi@0
 | 
   184 		show_usage
 | 
| 
devi@0
 | 
   185 		exit
 | 
| 
devi@0
 | 
   186 	fi	
 | 
| 
devi@0
 | 
   187 
 | 
| 
devi@8
 | 
   188 	for home in $users_to_install
 | 
| 
devi@0
 | 
   189 	do 
 | 
| 
devi@8
 | 
   190 		# fix this!
 | 
| 
devi@8
 | 
   191 		user=${home%/} 
 | 
| 
devi@8
 | 
   192 		user=${user##*/}
 | 
| 
devi@32
 | 
   193 		mkdir -p $home/.lilalo
 | 
| 
devi@32
 | 
   194 		echo $first_lab > $home/.lilalo/lab
 | 
| 
devi@32
 | 
   195 		chown -R $user $home/.lilalo
 | 
| 
devi@0
 | 
   196 
 | 
| 
devi@8
 | 
   197 		#if [ ! -e $home/.bash_profile ] 
 | 
| 
devi@8
 | 
   198 		#then
 | 
| 
devi@8
 | 
   199 		#	echo '. ~/.bashrc' >> ~/.bash_profile
 | 
| 
devi@8
 | 
   200 		#fi
 | 
| 
devi@8
 | 
   201 		#[ -e $home/.bash_profile ] \
 | 
| 
devi@8
 | 
   202 		#	&& install_to_profile $home/.bash_profile \
 | 
| 
devi@8
 | 
   203 		#	&& echo LabMaker is installed to $home/.bash_profile
 | 
| 
devi@8
 | 
   204 
 | 
| 
devi@8
 | 
   205 		echo Don\'t forget to check .bash_profile for .bashrc call
 | 
| 
devi@0
 | 
   206 
 | 
| 
devi@34
 | 
   207 		[ -e $home/.bash_profile ] && install_to_profile $home/.bash_profile \
 | 
| 
devi@34
 | 
   208 			&& install_to_profile $home/.bash_profile \
 | 
| 
devi@34
 | 
   209 			&& echo LabMaker is installed to $home/.bash_profile
 | 
| 
devi@0
 | 
   210 
 | 
| 
devi@0
 | 
   211 		touch $home/.bashrc
 | 
| 
devi@0
 | 
   212 		[ -e $home/.bashrc ] && install_to_bashrc $home/.bashrc \
 | 
| 
devi@0
 | 
   213 			&& install_to_bashrc $home/.bashrc \
 | 
| 
devi@0
 | 
   214 			&& echo LabMaker is installed to $home/.bashrc
 | 
| 
devi@0
 | 
   215 	done
 | 
| 
devi@0
 | 
   216 
 | 
| 
devi@0
 | 
   217 	for editor in $editors_to_install
 | 
| 
devi@0
 | 
   218 	do
 | 
| 
devi@0
 | 
   219 		[ -e $editor ] \
 | 
| 
devi@0
 | 
   220 			&& install_editor $editor \
 | 
| 
devi@0
 | 
   221 			&& echo LabMaker is installed to $editor
 | 
| 
devi@0
 | 
   222 	done
 | 
| 
devi@0
 | 
   223 else
 | 
| 
devi@0
 | 
   224 # UNINSTALLING LM
 | 
| 
devi@0
 | 
   225 	shift
 | 
| 
devi@0
 | 
   226 	users_to_install="$*"
 | 
| 
devi@0
 | 
   227 	for user in $users_to_install
 | 
| 
devi@0
 | 
   228 	do 
 | 
| 
devi@0
 | 
   229 		home=$user		
 | 
| 
devi@32
 | 
   230 		mkdir -p $home/.lilalo
 | 
| 
devi@32
 | 
   231 		echo $first_lab > $home/.lilalo/lab
 | 
| 
devi@32
 | 
   232 		chown -R ${user##*/} $home/.lilalo
 | 
| 
devi@0
 | 
   233 
 | 
| 
devi@8
 | 
   234 		#if [ ! -e $home/.bash_profile ] 
 | 
| 
devi@8
 | 
   235 		#then
 | 
| 
devi@8
 | 
   236 		#	echo '. ~/.bashrc' >> ~/.bash_profile
 | 
| 
devi@8
 | 
   237 		#fi
 | 
| 
devi@8
 | 
   238 		#[ -e $home/.bash_profile ] \
 | 
| 
devi@8
 | 
   239 		#	&& uninstall_from_profile $home/.bash_profile \
 | 
| 
devi@8
 | 
   240 		#	&& echo LabMaker is uninstalled from $home/.bash_profile
 | 
| 
devi@0
 | 
   241 
 | 
| 
devi@0
 | 
   242 		[ -e $home/.profile ] && uninstall_from_profile $home/.profile \
 | 
| 
devi@0
 | 
   243 			&& uninstall_from_profile $home/.profile \
 | 
| 
devi@0
 | 
   244 			&& echo LabMaker is uninstalled from $home/.profile
 | 
| 
devi@0
 | 
   245 
 | 
| 
devi@0
 | 
   246 		touch $home/.bashrc
 | 
| 
devi@0
 | 
   247 		[ -e $home/.bashrc ] && uninstall_from_bashrc $home/.bashrc \
 | 
| 
devi@0
 | 
   248 			&& uninstall_from_bashrc $home/.bashrc \
 | 
| 
devi@0
 | 
   249 			&& echo LabMaker is uninstalled from $home/.bashrc
 | 
| 
devi@0
 | 
   250 	done
 | 
| 
devi@0
 | 
   251 
 | 
| 
devi@0
 | 
   252 	for editor in $editors_to_install
 | 
| 
devi@0
 | 
   253 	do
 | 
| 
devi@0
 | 
   254 		[ -e $editor ] \
 | 
| 
devi@0
 | 
   255 			&& uninstall_editor $editor \
 | 
| 
devi@0
 | 
   256 			&& echo LabMaker is uninstalled from $editor
 | 
| 
devi@0
 | 
   257 	done
 | 
| 
devi@0
 | 
   258 fi	
 |