lilalo

annotate lm-install @ 38:466bea239d25

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