lilalo

annotate lm-install @ 87:c70be67ed3d4

Наведение порядка в коде.
Обработка чуть лучше отделена от представления.

+ добавлено три совета в документацию
author devi
date Tue Feb 28 13:11:26 2006 +0200 (2006-02-28)
parents aa788e638a9d
children
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