lilalo

annotate lm-install @ 27:098664cf339c

Выполнены шаги 4,5 в плане N05 по построению распределённой системы lilalo.
Шаг <6> в настоящее время не является необходимым.


Введено понятие сеанса.
Сеансом считается процедура работы с системой, начинающаяся с регистрации
в ней и зазаканчивающаяся разрегистрацией, и сопровождающаяся ведением одного
файла скрипта.
Одновременно с созданием скрипта (.script) создаётся соответствующий ему
файл с информацией о сеансе (.info).
Каждый сеанс имеет уникальный в пределах хоста идентификатор,
~local_session_id~, который впоследствии позволяет определить,
какие команды относятся к какому сеансу.

Добавлен backend-сервер, который получает данные от агентов и записывает
из в backend (в настойщий момент - в XML-файл).
Данные передаются по tcp-соединениям.
(Одновременно может работать несколько серверов.
Блокировка файла при записи пока что не выполняется ОСТОРОЖНО!!!!!!)

Агент периодически пытается отправить backend-серверу содержимое своего кэш-файла,
и если ему это удаётся, кэш файл очищается -- данные теперь хранятся в backend'е.

Взаимодействие агентов, backend-сервера и frontend'а
сейчас выполнеятся так:


+-------+
| |
| cache |
| |
+-^---+-+
| |
. ^ v . ^^ . +---------+ . ^^ .
/ \ tcp / \ | | / \ CGI
( agent )----->( backend- )-->| backend |-->( frontend )----->
\ / \ сервер / | | \ /
' . ' ' .. ' +---------+ ' .. '
^
|
+----+----+
| |
|*.script |
| *.info |
| |
+---------+

l3-frontend:
Теперь может выдавать результат работы на стандартный поток вывода.
Вместо имени файла нужно указать символ -

Добавлены файлы:

l3-backend - backend-сервер
l3-cgi - CGI-обвязка для l3-frontend'а

Новые конфигурационные параметры:
frontend_css Путь к файлу CSS, используемому в HTML-странице, которую генерирует frontend
frontend_google_ico Путь к иконке google
frontend_linux_ico Путь к иконке linux
frontend_freebsd_ico Путь к иконке freebsd
frontend_opennet_ico Путь к иконке opennet
frontend_local_ico Путь к иконке локальной документации

backend_address IP-адрес интерфейса, на котором работает backend-сервер
backend_port Порт, который слушает backend-сервер
backend_pidfile Путь к файлу, который хранит идентификатор процесса backend-сервера
backend_datafile Путь к файлу хранилищу (файлу backend)
author devi
date Mon Nov 07 11:24:49 2005 +0200 (2005-11-07)
parents 05d496f33d76
children 4d252e7dd478
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@0 42 # LabMaker:START
devi@0 43 #LMHOME=~/.labmaker
devi@0 44 #mkdir -p ${LMHOME}
devi@0 45 #TTY=`tty`
devi@0 46 #flush="-f"
devi@0 47 #exec script $flush -q $LMHOME/${TTY##*/}-$$.script
devi@0 48 # LabMaker:END
devi@0 49 LM_bash_profile
devi@0 50 cat $temp_file > $profile
devi@0 51 rm $temp_file
devi@0 52 }
devi@0 53
devi@0 54 uninstall_from_profile()
devi@0 55 {
devi@0 56 profile=$1
devi@0 57 cat $profile \
devi@0 58 | sed '/LabMaker:START/,/LabMaker:END/ d' \
devi@0 59 > $temp_file
devi@0 60 cat $temp_file > $profile
devi@0 61 rm $temp_file
devi@0 62 }
devi@0 63
devi@0 64 install_to_bashrc()
devi@0 65 {
devi@0 66 profile=$1
devi@0 67 cat $profile \
devi@0 68 | sed '/LabMaker:START/,/LabMaker:END/ d' \
devi@0 69 > $temp_file
devi@0 70 cat <<'LM_bash_profile' >> $temp_file
devi@27 71 # LabMaker:START
devi@27 72 LMHOME=~/.labmaker
devi@27 73 mkdir -p ${LMHOME}
devi@0 74
devi@27 75 uname -a | grep -qi bsd && bsd=yes
devi@27 76 flush="-f" #linux
devi@27 77 [ -n "$bsd" ] && flush="-t 0" #freebsd
devi@17 78
devi@27 79 tty=`tty`
devi@27 80 this_term=`w | grep "${tty##/dev/}" | awk '{print $8;}'`
devi@27 81 # freeBSD:
devi@27 82 [ -n "$bsd" ] && this_term=`w | grep "${tty##/dev/tty}" | awk '{print $6;}'`
devi@17 83
devi@16 84
devi@27 85 export PS1='\[`
devi@27 86 a="$?";
devi@27 87 HIDDEN=$([ "$a" = 0 ] || echo -n ^"$a")$(echo -n _${UID}_)$(echo -n _$$_)$(date\
devi@27 88 +"%j$(cat ${LMHOME}/lab 2>/dev/null) %H:%M:%S");
devi@27 89 echo $HIDDEN`\033[50D\033[K\][\u@\h:\W]\$ '
devi@16 90
devi@27 91 if [ -n "$this_term" ] && echo $this_term | grep -qv script
devi@27 92 then
devi@27 93 session_id=${tty##*/}-$$
devi@27 94 parent=`cat /proc/$PPID/cmdline 2> /dev/null`
devi@27 95 system=`uname -rs`
devi@27 96 login_from=`who | grep "${tty##/dev/}" | awk '{print $6;}' | tr -d '()'`
devi@27 97 [ -n "$bsd" ] && login_from="" #FIXME!
devi@27 98 start_time=`date +%s`
devi@27 99 hostname=`hostname -f`
devi@16 100
devi@27 101 cat <<INFO > $LMHOME/${session_id}.info
devi@27 102 <session>
devi@27 103 <session_id>$session_id</session_id>
devi@27 104 <hostname>$hostname</hostname>
devi@27 105 <user>$USER</user>
devi@27 106 <login_from>$login_from</login_from>
devi@27 107 <tty>$tty</tty>
devi@27 108 <system>$system</system>
devi@27 109 <parent>$parent</parent>
devi@27 110 <ppid>$PPID</ppid>
devi@27 111 <pid>$$</pid>
devi@27 112 <start_time>$start_time</start_time>
devi@27 113 </session>
devi@27 114 INFO
devi@27 115
devi@27 116 exec script $flush -q $LMHOME/${session_id}.script
devi@27 117 fi
devi@27 118 # LabMaker:END
devi@0 119 LM_bash_profile
devi@0 120 cat $temp_file > $profile
devi@0 121 rm $temp_file
devi@0 122 }
devi@0 123
devi@0 124 uninstall_from_bashrc()
devi@0 125 {
devi@0 126 profile=$1
devi@0 127 cat $profile \
devi@0 128 | sed '/LabMaker:START/,/LabMaker:END/ d' \
devi@0 129 > $temp_file
devi@0 130 cat $temp_file > $profile
devi@0 131 rm $temp_file
devi@0 132 }
devi@0 133
devi@0 134 install_editor()
devi@0 135 {
devi@0 136 editor=$1
devi@0 137 [ -e $editor.orig ] && cp $editor.orig $editor
devi@0 138 cp $editor $editor.orig
devi@0 139 cat <<'editor_wrapper' | sed "s@EDITOR@$editor@" > $editor
devi@0 140 #!/bin/sh
devi@0 141
devi@0 142 LMHOME=~/.labmaker
devi@0 143 if [ "${1#-}" = "$1" -a -d "$LMHOME" ]
devi@0 144 then
devi@0 145 LAB=`cat $LMHOME/lab`
devi@0 146 TIME="`date +%j${LAB}_%H:%M:%S`"
devi@0 147 DIR=""
devi@0 148 [ "${1#/}" = "$1" ] && DIR=$PWD/
devi@0 149 DIFFNAME=$PPID_${TIME}_`echo $DIR$1| sed s@_@__@ | sed 's@/@_@g'`.diff
devi@0 150 tmp="/tmp/lm-saved-$$"
devi@0 151 touch $1
devi@0 152 cp -- "$1" $tmp 2> /dev/null
devi@0 153 EDITOR.orig "$@" || ERR=1
devi@0 154 diff $tmp $1 > $LMHOME/$DIFFNAME 2> /dev/null
devi@0 155 rm $tmp 2> /dev/null
devi@0 156 if [ "$ERR" = 1 ]
devi@0 157 then
devi@0 158 false
devi@0 159 else
devi@0 160 true
devi@0 161 fi
devi@0 162 else
devi@0 163 exec EDITOR.orig "$@"
devi@0 164 fi
devi@0 165 editor_wrapper
devi@0 166
devi@0 167 }
devi@0 168
devi@0 169
devi@0 170 uninstall_editor()
devi@0 171 {
devi@0 172 editor=$1
devi@0 173 [ -e $editor.orig ] && mv $editor.orig $editor
devi@0 174 }
devi@0 175
devi@0 176 if [ "$1" != "-d" ]
devi@0 177 then
devi@0 178 # INSTALLING LM
devi@0 179 if [ $# -gt 0 ]
devi@0 180 then
devi@0 181 users_to_install="$*"
devi@0 182 fi
devi@0 183
devi@0 184 if [ -z "$users_to_install" ]
devi@0 185 then
devi@0 186 show_usage
devi@0 187 exit
devi@0 188 fi
devi@0 189
devi@8 190 for home in $users_to_install
devi@0 191 do
devi@8 192 # fix this!
devi@8 193 user=${home%/}
devi@8 194 user=${user##*/}
devi@0 195 mkdir -p $home/.labmaker
devi@0 196 echo $first_lab > $home/.labmaker/lab
devi@8 197 chown -R $user $home/.labmaker
devi@0 198
devi@8 199 #if [ ! -e $home/.bash_profile ]
devi@8 200 #then
devi@8 201 # echo '. ~/.bashrc' >> ~/.bash_profile
devi@8 202 #fi
devi@8 203 #[ -e $home/.bash_profile ] \
devi@8 204 # && install_to_profile $home/.bash_profile \
devi@8 205 # && echo LabMaker is installed to $home/.bash_profile
devi@8 206
devi@8 207 echo Don\'t forget to check .bash_profile for .bashrc call
devi@0 208
devi@0 209 [ -e $home/.profile ] && install_to_profile $home/.profile \
devi@0 210 && install_to_profile $home/.profile \
devi@0 211 && echo LabMaker is installed to $home/.profile
devi@0 212
devi@0 213 touch $home/.bashrc
devi@0 214 [ -e $home/.bashrc ] && install_to_bashrc $home/.bashrc \
devi@0 215 && install_to_bashrc $home/.bashrc \
devi@0 216 && echo LabMaker is installed to $home/.bashrc
devi@0 217 done
devi@0 218
devi@0 219 for editor in $editors_to_install
devi@0 220 do
devi@0 221 [ -e $editor ] \
devi@0 222 && install_editor $editor \
devi@0 223 && echo LabMaker is installed to $editor
devi@0 224 done
devi@0 225 else
devi@0 226 # UNINSTALLING LM
devi@0 227 shift
devi@0 228 users_to_install="$*"
devi@0 229 for user in $users_to_install
devi@0 230 do
devi@0 231 home=$user
devi@0 232 mkdir -p $home/.labmaker
devi@0 233 echo $first_lab > $home/.labmaker/lab
devi@0 234 chown -R ${user##*/} $home/.labmaker
devi@0 235
devi@8 236 #if [ ! -e $home/.bash_profile ]
devi@8 237 #then
devi@8 238 # echo '. ~/.bashrc' >> ~/.bash_profile
devi@8 239 #fi
devi@8 240 #[ -e $home/.bash_profile ] \
devi@8 241 # && uninstall_from_profile $home/.bash_profile \
devi@8 242 # && echo LabMaker is uninstalled from $home/.bash_profile
devi@0 243
devi@0 244 [ -e $home/.profile ] && uninstall_from_profile $home/.profile \
devi@0 245 && uninstall_from_profile $home/.profile \
devi@0 246 && echo LabMaker is uninstalled from $home/.profile
devi@0 247
devi@0 248 touch $home/.bashrc
devi@0 249 [ -e $home/.bashrc ] && uninstall_from_bashrc $home/.bashrc \
devi@0 250 && uninstall_from_bashrc $home/.bashrc \
devi@0 251 && echo LabMaker is uninstalled from $home/.bashrc
devi@0 252 done
devi@0 253
devi@0 254 for editor in $editors_to_install
devi@0 255 do
devi@0 256 [ -e $editor ] \
devi@0 257 && uninstall_editor $editor \
devi@0 258 && echo LabMaker is uninstalled from $editor
devi@0 259 done
devi@0 260 fi