lilalo
annotate lm-install @ 32:4d252e7dd478
l3-frontend:
Добавлена поддержка фильтрации по пользователю (user) и хосту (hostname).
Пока только прототип - нужно оптимизировать.
И нужно стандартизировать имена для полей
l3-cgi:
В current теперь могут быть подразделы
Добавлена поддержка фильтрации по пользователю (user) и хосту (hostname).
Пока только прототип - нужно оптимизировать.
И нужно стандартизировать имена для полей
l3-cgi:
В current теперь могут быть подразделы
| author | devi | 
|---|---|
| date | Mon Nov 14 07:42:57 2005 +0200 (2005-11-14) | 
| parents | 098664cf339c | 
| children | 34f3ce44c365 | 
| 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@0 | 38 cat $profile \ | 
| devi@0 | 39 | sed '/LabMaker:START/,/LabMaker:END/ d' \ | 
| devi@0 | 40 > $temp_file | 
| devi@0 | 41 cat <<'LM_bash_profile' >> $temp_file | 
| devi@32 | 42 # LabMaker:START | 
| devi@32 | 43 /usr/local/bin/l3-agent | 
| devi@32 | 44 # LabMaker:END | 
| devi@0 | 45 LM_bash_profile | 
| 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@27 | 93 [ -n "$bsd" ] && login_from="" #FIXME! | 
| devi@27 | 94 start_time=`date +%s` | 
| devi@27 | 95 hostname=`hostname -f` | 
| devi@16 | 96 | 
| devi@27 | 97 cat <<INFO > $LMHOME/${session_id}.info | 
| devi@27 | 98 <session> | 
| devi@32 | 99 <local_session_id>$session_id</local_session_id> | 
| devi@27 | 100 <hostname>$hostname</hostname> | 
| devi@27 | 101 <user>$USER</user> | 
| devi@27 | 102 <login_from>$login_from</login_from> | 
| devi@27 | 103 <tty>$tty</tty> | 
| devi@27 | 104 <system>$system</system> | 
| devi@27 | 105 <parent>$parent</parent> | 
| devi@27 | 106 <ppid>$PPID</ppid> | 
| devi@27 | 107 <pid>$$</pid> | 
| devi@27 | 108 <start_time>$start_time</start_time> | 
| devi@27 | 109 </session> | 
| devi@27 | 110 INFO | 
| devi@27 | 111 | 
| devi@27 | 112 exec script $flush -q $LMHOME/${session_id}.script | 
| devi@27 | 113 fi | 
| devi@27 | 114 # LabMaker:END | 
| devi@0 | 115 LM_bash_profile | 
| devi@0 | 116 cat $temp_file > $profile | 
| devi@0 | 117 rm $temp_file | 
| devi@0 | 118 } | 
| devi@0 | 119 | 
| devi@0 | 120 uninstall_from_bashrc() | 
| devi@0 | 121 { | 
| devi@0 | 122 profile=$1 | 
| devi@0 | 123 cat $profile \ | 
| devi@0 | 124 | sed '/LabMaker:START/,/LabMaker:END/ d' \ | 
| devi@0 | 125 > $temp_file | 
| devi@0 | 126 cat $temp_file > $profile | 
| devi@0 | 127 rm $temp_file | 
| devi@0 | 128 } | 
| devi@0 | 129 | 
| devi@0 | 130 install_editor() | 
| devi@0 | 131 { | 
| devi@0 | 132 editor=$1 | 
| devi@0 | 133 [ -e $editor.orig ] && cp $editor.orig $editor | 
| devi@0 | 134 cp $editor $editor.orig | 
| devi@0 | 135 cat <<'editor_wrapper' | sed "s@EDITOR@$editor@" > $editor | 
| devi@0 | 136 #!/bin/sh | 
| devi@0 | 137 | 
| devi@32 | 138 LMHOME=~/.lilalo | 
| devi@0 | 139 if [ "${1#-}" = "$1" -a -d "$LMHOME" ] | 
| devi@0 | 140 then | 
| devi@0 | 141 LAB=`cat $LMHOME/lab` | 
| devi@0 | 142 TIME="`date +%j${LAB}_%H:%M:%S`" | 
| devi@0 | 143 DIR="" | 
| devi@0 | 144 [ "${1#/}" = "$1" ] && DIR=$PWD/ | 
| devi@0 | 145 DIFFNAME=$PPID_${TIME}_`echo $DIR$1| sed s@_@__@ | sed 's@/@_@g'`.diff | 
| devi@0 | 146 tmp="/tmp/lm-saved-$$" | 
| devi@0 | 147 touch $1 | 
| devi@0 | 148 cp -- "$1" $tmp 2> /dev/null | 
| devi@0 | 149 EDITOR.orig "$@" || ERR=1 | 
| devi@0 | 150 diff $tmp $1 > $LMHOME/$DIFFNAME 2> /dev/null | 
| devi@0 | 151 rm $tmp 2> /dev/null | 
| devi@0 | 152 if [ "$ERR" = 1 ] | 
| devi@0 | 153 then | 
| devi@0 | 154 false | 
| devi@0 | 155 else | 
| devi@0 | 156 true | 
| devi@0 | 157 fi | 
| devi@0 | 158 else | 
| devi@0 | 159 exec EDITOR.orig "$@" | 
| devi@0 | 160 fi | 
| devi@0 | 161 editor_wrapper | 
| devi@0 | 162 | 
| devi@0 | 163 } | 
| devi@0 | 164 | 
| devi@0 | 165 | 
| devi@0 | 166 uninstall_editor() | 
| devi@0 | 167 { | 
| devi@0 | 168 editor=$1 | 
| devi@0 | 169 [ -e $editor.orig ] && mv $editor.orig $editor | 
| devi@0 | 170 } | 
| devi@0 | 171 | 
| devi@0 | 172 if [ "$1" != "-d" ] | 
| devi@0 | 173 then | 
| devi@0 | 174 # INSTALLING LM | 
| devi@0 | 175 if [ $# -gt 0 ] | 
| devi@0 | 176 then | 
| devi@0 | 177 users_to_install="$*" | 
| devi@0 | 178 fi | 
| devi@0 | 179 | 
| devi@0 | 180 if [ -z "$users_to_install" ] | 
| devi@0 | 181 then | 
| devi@0 | 182 show_usage | 
| devi@0 | 183 exit | 
| devi@0 | 184 fi | 
| devi@0 | 185 | 
| devi@8 | 186 for home in $users_to_install | 
| devi@0 | 187 do | 
| devi@8 | 188 # fix this! | 
| devi@8 | 189 user=${home%/} | 
| devi@8 | 190 user=${user##*/} | 
| devi@32 | 191 mkdir -p $home/.lilalo | 
| devi@32 | 192 echo $first_lab > $home/.lilalo/lab | 
| devi@32 | 193 chown -R $user $home/.lilalo | 
| devi@0 | 194 | 
| devi@8 | 195 #if [ ! -e $home/.bash_profile ] | 
| devi@8 | 196 #then | 
| devi@8 | 197 # echo '. ~/.bashrc' >> ~/.bash_profile | 
| devi@8 | 198 #fi | 
| devi@8 | 199 #[ -e $home/.bash_profile ] \ | 
| devi@8 | 200 # && install_to_profile $home/.bash_profile \ | 
| devi@8 | 201 # && echo LabMaker is installed to $home/.bash_profile | 
| devi@8 | 202 | 
| devi@8 | 203 echo Don\'t forget to check .bash_profile for .bashrc call | 
| devi@0 | 204 | 
| devi@0 | 205 [ -e $home/.profile ] && install_to_profile $home/.profile \ | 
| devi@0 | 206 && install_to_profile $home/.profile \ | 
| devi@0 | 207 && echo LabMaker is installed to $home/.profile | 
| devi@0 | 208 | 
| devi@0 | 209 touch $home/.bashrc | 
| devi@0 | 210 [ -e $home/.bashrc ] && install_to_bashrc $home/.bashrc \ | 
| devi@0 | 211 && install_to_bashrc $home/.bashrc \ | 
| devi@0 | 212 && echo LabMaker is installed to $home/.bashrc | 
| devi@0 | 213 done | 
| devi@0 | 214 | 
| devi@0 | 215 for editor in $editors_to_install | 
| devi@0 | 216 do | 
| devi@0 | 217 [ -e $editor ] \ | 
| devi@0 | 218 && install_editor $editor \ | 
| devi@0 | 219 && echo LabMaker is installed to $editor | 
| devi@0 | 220 done | 
| devi@0 | 221 else | 
| devi@0 | 222 # UNINSTALLING LM | 
| devi@0 | 223 shift | 
| devi@0 | 224 users_to_install="$*" | 
| devi@0 | 225 for user in $users_to_install | 
| devi@0 | 226 do | 
| devi@0 | 227 home=$user | 
| devi@32 | 228 mkdir -p $home/.lilalo | 
| devi@32 | 229 echo $first_lab > $home/.lilalo/lab | 
| devi@32 | 230 chown -R ${user##*/} $home/.lilalo | 
| devi@0 | 231 | 
| devi@8 | 232 #if [ ! -e $home/.bash_profile ] | 
| devi@8 | 233 #then | 
| devi@8 | 234 # echo '. ~/.bashrc' >> ~/.bash_profile | 
| devi@8 | 235 #fi | 
| devi@8 | 236 #[ -e $home/.bash_profile ] \ | 
| devi@8 | 237 # && uninstall_from_profile $home/.bash_profile \ | 
| devi@8 | 238 # && echo LabMaker is uninstalled from $home/.bash_profile | 
| devi@0 | 239 | 
| devi@0 | 240 [ -e $home/.profile ] && uninstall_from_profile $home/.profile \ | 
| devi@0 | 241 && uninstall_from_profile $home/.profile \ | 
| devi@0 | 242 && echo LabMaker is uninstalled from $home/.profile | 
| devi@0 | 243 | 
| devi@0 | 244 touch $home/.bashrc | 
| devi@0 | 245 [ -e $home/.bashrc ] && uninstall_from_bashrc $home/.bashrc \ | 
| devi@0 | 246 && uninstall_from_bashrc $home/.bashrc \ | 
| devi@0 | 247 && echo LabMaker is uninstalled from $home/.bashrc | 
| devi@0 | 248 done | 
| devi@0 | 249 | 
| devi@0 | 250 for editor in $editors_to_install | 
| devi@0 | 251 do | 
| devi@0 | 252 [ -e $editor ] \ | 
| devi@0 | 253 && uninstall_editor $editor \ | 
| devi@0 | 254 && echo LabMaker is uninstalled from $editor | 
| devi@0 | 255 done | 
| devi@0 | 256 fi | 
