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
|