Журнал лабораторных работ

Содержание

Журнал

Вторник (11/28/17)

/dev/pts/0
10:26:17
#> 2342

10:26:22
#> 233455

10:26:25
#> 23weqrg435

10:26:31
#> 23weqrg43544rrrr

10:26:34
#> 23weqrg43544rrrrwe23

10:26:38
#>wew34234rtert453

10:26:45
#ls
233455  2342  23422  234223452  2342234525534  2342234525534566  23weqrg435  23weqrg43544rrrr  23weqrg43544rrrrwe23  install  test.java  wew34234rtert453
10:26:47
#shopt
autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
checkwinsize    on
cmdhist         on
compat31        off
compat32        off
compat40        off
...
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
progcomp        on
promptvars      on
restricted_shell        off
shift_verbose   off
sourcepath      on
xpg_echo        off
10:27:47
#shopt -s extglob

10:29:49
#shopt
autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
checkwinsize    on
cmdhist         on
compat31        off
compat32        off
compat40        off
...
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
progcomp        on
promptvars      on
restricted_shell        off
shift_verbose   off
sourcepath      on
xpg_echo        off
10:29:51
#ls + ([[:digit:]])
l3script: syntax error near unexpected token `('
10:32:32
#ls +([[:digit:]])
233455  2342  23422  234223452  2342234525534  2342234525534566
10:32:42
#cd

прошло 10 минут
10:43:31
#touch f(1,2,3,4,5)
l3script: syntax error near unexpected token `('
10:43:52
#touch f{1,2,3,4,5}

10:44:03
#ls
233455  2342  23422  234223452  2342234525534  2342234525534566  23weqrg435  23weqrg43544rrrr  23weqrg43544rrrrwe23  f1  f2  f3  f4  f5  install  test.java  wew34234rtert453
10:44:05
#rm f{1,2,3,4,5}

10:46:53
#ls
233455  2342  23422  234223452  2342234525534  2342234525534566  23weqrg435  23weqrg43544rrrr  23weqrg43544rrrrwe23  install  test.java  wew34234rtert453
10:46:54
#touch f{1,2,3,4,5}

10:47:08
#touch f{1,2,3,4,5} | za
l3script: za: команда не найдена
10:49:06
#touch f{1,2,3,4,5} | xargs -i cp -v() /tmp/
l3script: syntax error near unexpected token `('
10:49:41
#touch f{1,2,3,4,5} | xargs -i cp -v{} /tmp/

10:49:52
#whi
which     while     whiptail
10:49:52
#which who
/usr/bin/who
10:56:18
#ls -l /usr/bin/wh
whatis    whereis   which     whiptail  who       whoami
10:56:18
#ls -l /usr/bin/who
-rwxr-xr-x 1 root root 55888 Янв 26  2013 /usr/bin/who
10:56:39
#ls -l 'which who'
ls: невозможно получить доступ к which who: Нет такого файла или каталога
10:57:36
#ls -l `which who`
-rwxr-xr-x 1 root root 55888 Янв 26  2013 /usr/bin/who
10:58:11
#echo $[5+8]
13
прошло 25 минут
11:23:39
#ps ax | wc -l
61
11:25:19
#top
top - 12:26:07 up 3 days, 20:38,  3 users,  load average: 0,24, 0,06, 0,06
Tasks:  59 total,   1 running,  58 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,0 us,  0,3 sy,  0,0 ni, 99,7 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:    507368 total,   292316 used,   215052 free,    86904 buffers
KiB Swap:        0 total,        0 used,        0 free,   112004 cached
  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
 7778 root      20   0 18168  468  308 S   0,3  0,1   0:00.03 script
    1 root      20   0 10648  828  696 S   0,0  0,2   0:06.23 init
    2 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kthreadd
    3 root      20   0     0    0    0 S   0,0  0,0   0:01.81 ksoftirqd/0
...
 3927 user      20   0 48096  10m 1716 S   0,0  2,1   2:27.56 l3-agent
 7700 root      20   0 71380 3788 2892 R   0,0  0,7   0:00.21 sshd
 7702 root      20   0 22168 2860 1720 S   0,0  0,6   0:00.04 bash
 7747 root      20   0 18164  840  688 S   0,0  0,2   0:00.02 script
 7778 root      20   0 18168  468  308 S   0,0  0,1   0:00.05 script
 7779 root      20   0 21652 2364 1740 S   0,0  0,5   0:00.33 l3script
 7944 root      20   0 71380 3720 2824 S   0,0  0,7   0:00.04 sshd
 7946 user      20   0 71380 1976 1080 S   0,0  0,4   0:00.01 sshd
 7947 user      20   0 24260 2932 1756 S   0,0  0,6   0:00.05 bash
 7993 user      20   0 18164  840  684 S   0,0  0,2   0:00.05 script
11:26:40
#$[$(ps ax | wc -l)-2]
l3script: 60: команда не найдена
11:27:12
#echo $[$(ps ax | wc -l)-4]
58
11:27:34
#echo $[$(ps ax | wc -l)-4]
58
11:28:26
#zsh

11:30:19
#cat install
#!/bin/sh
hostname=`hostname`
uname -a | egrep -qi '(freebsd|darwin)' || hostname=`hostname -f`
###############################################################################
#
# Set this variables before installation:
lilalo_user=13-10-2014
lab=NT-LNet
install_l3bashrc_for_this_users=${users:-"root user"}  # users who will use l3agent and l3script
lilalo_context="/users/${lilalo_user}/${lab}/${hostname}"
...
step "Downloading l3prompt" ${wget} ${url_l3prompt}
step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}'
step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }'
step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }'
step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users
step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users
cd /
rm -rf ${temp_dir}
show_final_message
11:34:40
#cat install | cat
#!/bin/sh
hostname=`hostname`
uname -a | egrep -qi '(freebsd|darwin)' || hostname=`hostname -f`
###############################################################################
#
# Set this variables before installation:
lilalo_user=13-10-2014
lab=NT-LNet
install_l3bashrc_for_this_users=${users:-"root user"}  # users who will use l3agent and l3script
lilalo_context="/users/${lilalo_user}/${lab}/${hostname}"
...
step "Downloading l3prompt" ${wget} ${url_l3prompt}
step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}'
step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }'
step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }'
step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users
step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users
cd /
rm -rf ${temp_dir}
show_final_message
11:37:09
#cat
test
test
Privat
Privat
^C
11:38:02
#cat help
cat: help: Нет такого файла или каталога
11:38:54
#cat --help
Использование: cat [КÐФАЙÐ
²Ð²Ð¾Ð´ и отправляет в стандартный вывод.
  -A, --show-all           синоним -vET
  -b, --number-nonblank    нумеровать непустые строки при выводе
  -e                       подавляет -n, синоним -vE
  -E, --show-ends          показывать $ в конце каждой строки
  -n, --number             нумеровать все строки при выводе
  -s, --squeeze-blank      выводить не более одной пустой строки при повторе
  -t                       синоним -vT
  -T, --show-tabs          показывать символов табуляции как ^I
...
      --version  показать информацию о версии и выйти
Если ФАЙндартный ввод.
Примеры:
  cat f - g  Выводит содержимое f, потом стандартный ввод, потом g.
  cat        Копирует стандартный ввод на стандартный вывод.
Об ошибках в cat сообщайте по адресу bug-coreutils@gnu.org.
Домашняя страница GNU coreutils: <http://www.gnu.org/software/coreutils/>
Справка по работе с программами GNU: <http://www.gnu.org/gethelp/>
Об ошибках в переводе сообщений «cat» сообщайте по адресу <gnu@mx.ru>
Полная документация доступна по команде: info coreutils 'cat invocation'
11:38:57
#top
top - 12:45:23 up 3 days, 20:58,  3 users,  load average: 0,00, 0,01, 0,05
Tasks:  59 total,   1 running,  58 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,1 us,  0,0 sy,  0,0 ni, 99,8 id,  0,1 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:    507368 total,   293060 used,   214308 free,    87340 buffers
KiB Swap:        0 total,        0 used,        0 free,   112164 cached
  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
    1 root      20   0 10648  828  696 S   0,0  0,2   0:06.24 init
    2 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kthreadd
    3 root      20   0     0    0    0 S   0,0  0,0   0:01.82 ksoftirqd/0
    5 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kworker/u:0
...
 3927 user      20   0 48096  10m 1716 S   0,0  2,1   2:27.81 l3-agent
 7700 root      20   0 71380 3788 2892 S   0,0  0,7   0:00.26 sshd
 7702 root      20   0 22168 2860 1720 S   0,0  0,6   0:00.04 bash
 7747 root      20   0 18164  840  688 S   0,0  0,2   0:00.03 script
 7778 root      20   0 18168  468  308 S   0,0  0,1   0:00.08 script
 7779 root      20   0 21652 2364 1740 S   0,0  0,5   0:00.40 l3script
 7944 root      20   0 71380 3720 2824 S   0,0  0,7   0:00.04 sshd
 7946 user      20   0 71380 1976 1080 S   0,0  0,4   0:00.01 sshd
 7947 user      20   0 24260 2932 1756 S   0,0  0,6   0:00.05 bash
 7993 user      20   0 18164  840  684 S   0,0  0,2   0:00.05 script
11:45:24
#top
top - 12:46:00 up 3 days, 20:58,  3 users,  load average: 0,00, 0,01, 0,05
Tasks:  59 total,   1 running,  58 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,0 us,  0,0 sy,  0,0 ni,100,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:    507368 total,   293060 used,   214308 free,    87356 buffers
KiB Swap:        0 total,        0 used,        0 free,   112196 cached
  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
 7700 root      20   0 71380 3788 2892 S   0,3  0,7   0:00.27 sshd
 8712 root      20   0 25288 1580 1128 R   0,3  0,3   0:00.01 top
    1 root      20   0 10648  828  696 S   0,0  0,2   0:06.24 init
    2 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kthreadd
...
 2288 root      20   0 18368  972  812 S   0,0  0,2   0:00.00 getty
 2289 root      20   0 18368  972  812 S   0,0  0,2   0:00.00 getty
 2290 root      20   0 18368  972  812 S   0,0  0,2   0:00.00 getty
 2291 root      20   0 18368  968  812 S   0,0  0,2   0:00.00 getty
 2292 root      20   0 18368  972  812 S   0,0  0,2   0:00.00 getty
 3358 root      20   0     0    0    0 S   0,0  0,0   0:00.75 flush-202:0
 3401 root      20   0 47876  10m 1724 S   0,0  2,1   3:04.82 l3-agent
 7702 root      20   0 22168 2860 1720 S   0,0  0,6   0:00.04 bash
 7747 root      20   0 18164  840  688 S   0,0  0,2   0:00.03 script
 7778 root      20   0 18168  468  308 S   0,0  0,1   0:00.09 script
11:46:07
#find / -mtime -1-user ivan
find: неверный аргумент `ivan' у `-mtime'
11:48:12
#find / -mtime -1 -user ivan
/home/ivan
/home/ivan/.bash_history
find: `/proc/8730/task/8730/fd/5': Нет такого файла или каталога
find: `/proc/8730/task/8730/fdinfo/5': Нет такого файла или каталога
find: `/proc/8730/fd/5': Нет такого файла или каталога
find: `/proc/8730/fdinfo/5': Нет такого файла или каталога
11:48:18
#find /home -mtime -1 -user ivan
/home/ivan
/home/ivan/.bash_history
11:48:36
#find /home -mtime -1 -user ivan > file.txt

11:49:34
#cat file.txt
/home/ivan
/home/ivan/.bash_history
11:49:58
#su -ivan
su: неверный ключ -- «i»
Использование: su [параметры] [ПОÐ
, --command КОМАНДА         передать КОМАНДУ вызываемой оболочке
  -h, --help                    показать данное сообщение и закончить работу
  -, -l, --login                запускать оболочку как регистрационную
  -m, -p,
  --preserve-environment        не сбрасывать переменные окружения и
                                сохранить запустившую оболочку
  -s, --shell ОБОÐ
                          вместо значения из файла passwd
11:51:07
#su - ivan
ivan@debian4:~$ find /home -mtime -1 -user ivan > file.txt
ivan@debian4:~$ find / -mtime -1 -user ivan > file.txt
find: `/etc/ssl/private': Отказано в доступе
find: `/lost+found': Отказано в доступе
find: `/var/cache/ldconfig': Отказано в доступе
find: `/var/spool/exim4': Отказано в доступе
find: `/var/spool/cron/crontabs': Отказано в доступе
find: `/var/log/exim4': Отказано в доступе
find: `/var/log/iptraf': Отказано в доступе
find: `/run/exim4': Отказано в доступе
...
find: `/proc/8778/fd': Отказано в доступе
find: `/proc/8778/fdinfo': Отказано в доступе
find: `/proc/8778/ns': Отказано в доступе
find: `/proc/8861/task/8861/fd/5': Нет такого файла или каталога
find: `/proc/8861/task/8861/fdinfo/5': Нет такого файла или каталога
find: `/proc/8861/fd/5': Нет такого файла или каталога
find: `/proc/8861/fdinfo/5': Нет такого файла или каталога
ivan@debian4:~$ find / -mtime -1 -user ivan > file.txt 2> errors.txt
ivan@debian4:~$ exit
logout
прошло 55 минут
12:46:46
#clean
l3script: clean: команда не найдена
12:46:56
#clear

12:46:59
#shop set -o
l3script: shop: команда не найдена
12:47:10
#set -o
allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
ignoreeof       off
...
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off
12:47:19
#set -o noclobber

12:48:42
#data >> install
l3script: data: команда не найдена
12:48:52
#set -o
allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
ignoreeof       off
...
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off
12:49:06
#date >> install

12:49:28
#set +o noclobber

12:49:49
#lsattr install
-------------e-- install
12:50:58
#chattr +a install

12:51:58
#lsattr install
-----a-------e-- install
12:52:02
#chattr -a install

12:53:22
#chattr +i install

12:53:33
#lsattr install
----i--------e-- install
12:53:37
#date >> install
l3script: install: Отказано в доступе
12:53:46
#chattr -i install

12:54:21
#lsattr install
-------------e-- install
12:54:24
#ps uax | sort -k4 -r | head -11
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user      3927  0.1  2.1  48096 10836 ?        Ss   Ноя27   2:29 l3-agent
root      3401  0.2  2.0  47876 10556 ?        Ss   Ноя27   3:17 l3-agent
root      7700  0.0  0.7  71380  3788 ?        Ss   10:07   0:00 sshd: root@pts/0
root      7944  0.0  0.7  71380  3720 ?        Ss   10:19   0:00 sshd: user [priv]
root      8267  0.0  0.7  71288  3680 ?        Ss   10:59   0:00 sshd: root@pts/4
root      8269  0.0  0.6  24308  3080 pts/4    Ss+  10:59   0:00 -bash
user      7947  0.0  0.5  24260  2932 pts/2    Ss   10:19   0:00 -bash
user      8065  0.0  0.5  22260  3044 pts/3    Ss+  10:20   0:00 l3script
root      7702  0.0  0.5  22168  2860 pts/0    Ss   10:07   0:00 -bash
root      7779  0.0  0.4  21656  2368 pts/1    Ss   10:07   0:00 l3script
13:01:05
#ls
233455  2342  23422  234223452  2342234525534  2342234525534566  23weqrg435  23weqrg43544rrrr  23weqrg43544rrrrwe23  f1  f2  f3  f4  f5  file.txt  install  test.java  wew34234rtert453
13:02:18
#ls [0-9]* | rm
rm: пропущен операнд
Попробуйте «rm --help» для получения более подробного описания.
13:02:39
#ls [0-9]* | xargs rm

13:03:15
#ls
f1  f2  f3  f4  f5  file.txt  install  test.java  wew34234rtert453
13:03:18
#ps uax | sort -k4 -r | head -11
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user      3927  0.1  2.1  48096 10836 ?        Ss   Ноя27   2:29 l3-agent
root      3401  0.2  2.0  47876 10556 ?        Ss   Ноя27   3:19 l3-agent
root      7700  0.0  0.7  71380  3788 ?        Ss   10:07   0:00 sshd: root@pts/0
root      7944  0.0  0.7  71380  3720 ?        Ss   10:19   0:00 sshd: user [priv]
root      8267  0.0  0.7  71288  3680 ?        Ss   10:59   0:00 sshd: root@pts/4
root      8269  0.0  0.6  24308  3080 pts/4    Ss+  10:59   0:00 -bash
user      7947  0.0  0.5  24260  2932 pts/2    Ss   10:19   0:00 -bash
user      8065  0.0  0.5  22260  3044 pts/3    Ss+  10:20   0:00 l3script
root      7702  0.0  0.5  22168  2860 pts/0    Ss   10:07   0:00 -bash
root      7779  0.0  0.4  21656  2368 pts/1    Ss   10:07   0:00 l3script
13:04:21
#ps uax | sort -k4 -r | tee proc.txt | head -11
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user      3927  0.1  2.1  48096 10836 ?        Ss   Ноя27   2:29 l3-agent
root      3401  0.2  2.0  47876 10556 ?        Ss   Ноя27   3:19 l3-agent
root      7700  0.0  0.7  71380  3788 ?        Ss   10:07   0:00 sshd: root@pts/0
root      7944  0.0  0.7  71380  3720 ?        Ss   10:19   0:00 sshd: user [priv]
root      8267  0.0  0.7  71288  3680 ?        Ss   10:59   0:00 sshd: root@pts/4
root      8269  0.0  0.6  24308  3080 pts/4    Ss+  10:59   0:00 -bash
user      7947  0.0  0.5  24260  2932 pts/2    Ss   10:19   0:00 -bash
user      8065  0.0  0.5  22260  3044 pts/3    Ss+  10:20   0:00 l3script
root      7702  0.0  0.5  22168  2860 pts/0    Ss   10:07   0:00 -bash
root      7779  0.0  0.4  21656  2368 pts/1    Ss   10:07   0:00 l3script
13:04:46
#cat proc.txt
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user      3927  0.1  2.1  48096 10836 ?        Ss   Ноя27   2:29 l3-agent
root      3401  0.2  2.0  47876 10556 ?        Ss   Ноя27   3:19 l3-agent
root      7700  0.0  0.7  71380  3788 ?        Ss   10:07   0:00 sshd: root@pts/0
root      7944  0.0  0.7  71380  3720 ?        Ss   10:19   0:00 sshd: user [priv]
root      8267  0.0  0.7  71288  3680 ?        Ss   10:59   0:00 sshd: root@pts/4
root      8269  0.0  0.6  24308  3080 pts/4    Ss+  10:59   0:00 -bash
user      7947  0.0  0.5  24260  2932 pts/2    Ss   10:19   0:00 -bash
user      8065  0.0  0.5  22260  3044 pts/3    Ss+  10:20   0:00 l3script
root      7702  0.0  0.5  22168  2860 pts/0    Ss   10:07   0:00 -bash
...
root         9  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [khelper]
root        10  0.0  0.0      0     0 ?        S    Ноя24   0:00 [kdevtmpfs]
root        17  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [kblockd]
root        22  0.0  0.0      0     0 ?        S    Ноя24   0:00 [fsnotify_mark]
root       128  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [ext4-dio-unwrit]
root        23  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [crypto]
root         8  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [cpuset]
root        15  0.0  0.0      0     0 ?        S    Ноя24   0:00 [bdi-default]
root        87  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [ata_sff]
root        21  0.0  0.0      0     0 ?        SN   Ноя24   0:00 [ksmd]
13:06:06
#clean
l3script: clean: команда не найдена
прошло 97 минут
14:43:39
#clear

14:43:41
#cat install
#!/bin/sh
hostname=`hostname`
uname -a | egrep -qi '(freebsd|darwin)' || hostname=`hostname -f`
###############################################################################
#
# Set this variables before installation:
lilalo_user=13-10-2014
lab=NT-LNet
install_l3bashrc_for_this_users=${users:-"root user"}  # users who will use l3agent and l3script
lilalo_context="/users/${lilalo_user}/${lab}/${hostname}"
...
step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}'
step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }'
step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }'
step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users
step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users
cd /
rm -rf ${temp_dir}
show_final_message
Втр Ноя 28 13:49:28 EET 2017
14:44:16
#cat install | grep rm
perl_modules="Term-VT102 Text-Iconv"
normC='\033[0;39m'
    printf "${whiteC}""$msg""...${normC}\n"
          printf "${greenC}""Ok\n""${normC}"
        printf "${redC}""Failed\n""${normC}"
For further information see http://xgu.ru/lilalo/ (in Russian).
rm -rf ${temp_dir}
14:45:25
#cat install | grep ^rm
rm -rf ${temp_dir}
14:46:25
#cat install | grep '^rm'
rm -rf ${temp_dir}
14:46:56
#cat install | grep '"'
install_l3bashrc_for_this_users=${users:-"root user"}  # users who will use l3agent and l3script
lilalo_context="/users/${lilalo_user}/${lab}/${hostname}"
url_lilalo="http://xgu.ru/lilalo"
url_l3bashrc="${url_lilalo}"/l3bashrc
url_l3agent="${url_lilalo}"/l3-agent
url_l3config_pm="${url_lilalo}"/l3config.pm
url_l3config="${url_lilalo}"/l3-config
url_l3prompt="${url_lilalo}"/l3prompt
perl_modules="Term-VT102 Text-Iconv"
apt_get_install_this="perl make libmodule-build-perl libc6-dev gcc"
...
        user_home=`get_user_home "$user"`
step "Installing dependencies" apt_get_install_deps
step "Downloading l3bashrc" ${wget} ${url_l3bashrc}
step "Downloading l3prompt" ${wget} ${url_l3prompt}
step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}'
step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }'
step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }'
step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users
step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users
14:47:31
#cat install | grep '"' | nl
     1  install_l3bashrc_for_this_users=${users:-"root user"}  # users who will use l3agent and l3script
     2  lilalo_context="/users/${lilalo_user}/${lab}/${hostname}"
     3  url_lilalo="http://xgu.ru/lilalo"
     4  url_l3bashrc="${url_lilalo}"/l3bashrc
     5  url_l3agent="${url_lilalo}"/l3-agent
     6  url_l3config_pm="${url_lilalo}"/l3config.pm
     7  url_l3config="${url_lilalo}"/l3-config
     8  url_l3prompt="${url_lilalo}"/l3prompt
     9  perl_modules="Term-VT102 Text-Iconv"
    10  apt_get_install_this="perl make libmodule-build-perl libc6-dev gcc"
...
    26          user_home=`get_user_home "$user"`
    27  step "Installing dependencies" apt_get_install_deps
    28  step "Downloading l3bashrc" ${wget} ${url_l3bashrc}
    29  step "Downloading l3prompt" ${wget} ${url_l3prompt}
    30  step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}'
    31  step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }'
    32  step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }'
    33  step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
    34  step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users
    35  step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users
14:48:16
#cat install | grep '"$' | nl
     1  lilalo_context="/users/${lilalo_user}/${lab}/${hostname}"
     2  url_lilalo="http://xgu.ru/lilalo"
     3  perl_modules="Term-VT102 Text-Iconv"
     4  apt_get_install_this="perl make libmodule-build-perl libc6-dev gcc"
     5          echo "Please install this dependencies manually:"
     6          echo "Have you installed this already (y/n)?"
     7      msg="$1"
     8      printf "${whiteC}""$msg""...${normC}\n"
     9  #    eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n"
    10          printf "${redC}""Failed\n""${normC}"
    11      users="$@"
    12      users="$@"
    13      users="$@"
14:48:29
#cat install | grep '&'
uname -a | egrep -qi '(bsd|darwin)' && wget=fetch
    if which apt-get >& /dev/null
#    eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n"
    eval "$@" 2>&1 > log 2>&1 && \
    uname -a | egrep -qi '(freebsd|darwin)' && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}'
        || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc
14:50:23
#cat install | grep '&&'
uname -a | egrep -qi '(bsd|darwin)' && wget=fetch
#    eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n"
    eval "$@" 2>&1 > log 2>&1 && \
    uname -a | egrep -qi '(freebsd|darwin)' && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}'
        || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc
14:50:43
#cat install | grep '&+'

14:51:27
#cat install | grep -E '&+'
uname -a | egrep -qi '(bsd|darwin)' && wget=fetch
    if which apt-get >& /dev/null
#    eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n"
    eval "$@" 2>&1 > log 2>&1 && \
    uname -a | egrep -qi '(freebsd|darwin)' && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}'
        || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc
14:51:55
#cat install | egrep '&+'
uname -a | egrep -qi '(bsd|darwin)' && wget=fetch
    if which apt-get >& /dev/null
#    eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n"
    eval "$@" 2>&1 > log 2>&1 && \
    uname -a | egrep -qi '(freebsd|darwin)' && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}'
        || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc
14:52:02
#cat install | egrep '&{2}'
uname -a | egrep -qi '(bsd|darwin)' && wget=fetch
#    eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n"
    eval "$@" 2>&1 > log 2>&1 && \
    uname -a | egrep -qi '(freebsd|darwin)' && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}'
        || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc
14:53:01
#cat install | egrep '&{1,2}'
uname -a | egrep -qi '(bsd|darwin)' && wget=fetch
    if which apt-get >& /dev/null
#    eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n"
    eval "$@" 2>&1 > log 2>&1 && \
    uname -a | egrep -qi '(freebsd|darwin)' && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}'
        || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc
14:53:17
#ls
f1  f2  f3  f4  f5  file.txt  install  proc.txt  test.java  wew34234rtert453
14:56:58
#cat -nl install
cat: неверный ключ -- l
Попробуйте «cat --help» для получения более подробного описания.
15:00:33
#cat nl install
cat: nl: Нет такого файла или каталога
#!/bin/sh
hostname=`hostname`
uname -a | egrep -qi '(freebsd|darwin)' || hostname=`hostname -f`
###############################################################################
#
# Set this variables before installation:
lilalo_user=13-10-2014
lab=NT-LNet
install_l3bashrc_for_this_users=${users:-"root user"}  # users who will use l3agent and l3script
...
step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}'
step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }'
step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }'
step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users
step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users
cd /
rm -rf ${temp_dir}
show_final_message
Втр Ноя 28 13:49:28 EET 2017
15:00:36
#cat install nl
#!/bin/sh
hostname=`hostname`
uname -a | egrep -qi '(freebsd|darwin)' || hostname=`hostname -f`
###############################################################################
#
# Set this variables before installation:
lilalo_user=13-10-2014
lab=NT-LNet
install_l3bashrc_for_this_users=${users:-"root user"}  # users who will use l3agent and l3script
lilalo_context="/users/${lilalo_user}/${lab}/${hostname}"
...
step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }'
step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }'
step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users
step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users
cd /
rm -rf ${temp_dir}
show_final_message
Втр Ноя 28 13:49:28 EET 2017
cat: nl: Нет такого файла или каталога
15:01:29
#vi ip.txt
--- /dev/null	2017-11-24 15:19:42.412000125 +0200
+++ ip.txt	2017-11-28 16:06:09.095858018 +0200
@@ -0,0 +1,11 @@
+192.168.6.1
+10.0.1.0
+23.45.63.55
+255.233.4.3
+172.16.66.123
+192.168.137.1
+5.f.6.h
+88.fd.77.777
+111.111.111.777
+15.g.g.y
+77.gg.77.gg
15:06:17
# 11
192.168.6.1
10.0.1.0
23.45.63.55
255.233.4.3
172.16.66.123
192.168.137.1
5.f.6.h
88.fd.77.777
111.111.111.777
15.g.g.y
77.gg.77.gg
прошло 14 минут
15:21:16
#cat ip.txt | egrep '^(([0-9]|[0-9]{2}]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[0-9]{2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$'
192.168.6.1
255.233.4.3
192.168.137.1
прошло 10 минут
15:32:07
#sl
l3script: sl: команда не найдена
15:32:09
#ls
f1  f2  f3  f4  f5  file.txt  install  ip.txt  passwd  proc.txt  test.java  wew34234rtert453
15:32:12
#ca
cal        calendar   caller     captoinfo  case       cat        catchsegv  catman

Файлы

  • --help
  • cat
  • file.txt
  • install
  • proc.txt
  • --help
    >
    Использование: cat [КÐФАЙÐ
    ²Ð²Ð¾Ð´ и отправляет в стандартный вывод.
      -A, --show-all           синоним -vET
      -b, --number-nonblank    нумеровать непустые строки при выводе
      -e                       подавляет -n, синоним -vE
      -E, --show-ends          показывать $ в конце каждой строки
      -n, --number             нумеровать все строки при выводе
      -s, --squeeze-blank      выводить не более одной пустой строки при повторе
      -t                       синоним -vT
      -T, --show-tabs          показывать символов табуляции как ^I
      -u                       (игнорируется)
      -v, --show-nonprinting   использовать запись с ^ и M-, за исключением
                               символов перевода строки и табуляции
          --help     показать эту справку и выйти
          --version  показать информацию о версии и выйти
    Если ФАЙндартный ввод.
    Примеры:
      cat f - g  Выводит содержимое f, потом стандартный ввод, потом g.
      cat        Копирует стандартный ввод на стандартный вывод.
    Об ошибках в cat сообщайте по адресу bug-coreutils@gnu.org.
    Домашняя страница GNU coreutils: <http://www.gnu.org/software/coreutils/>
    Справка по работе с программами GNU: <http://www.gnu.org/gethelp/>
    Об ошибках в переводе сообщений «cat» сообщайте по адресу <gnu@mx.ru>
    Полная документация доступна по команде: info coreutils 'cat invocation'
    
    cat
    >
    #!/bin/sh
    hostname=`hostname`
    uname -a | egrep -qi '(freebsd|darwin)' || hostname=`hostname -f`
    ###############################################################################
    #
    # Set this variables before installation:
    lilalo_user=13-10-2014
    lab=NT-LNet
    install_l3bashrc_for_this_users=${users:-"root user"}  # users who will use l3agent and l3script
    lilalo_context="/users/${lilalo_user}/${lab}/${hostname}"
    #
    ###############################################################################
    lilalo_rc=.l3rc
    lilalo_home=.lilalo
    url_lilalo="http://xgu.ru/lilalo"
    url_l3bashrc="${url_lilalo}"/l3bashrc
    url_l3agent="${url_lilalo}"/l3-agent
    url_l3config_pm="${url_lilalo}"/l3config.pm
    url_l3config="${url_lilalo}"/l3-config
    url_l3prompt="${url_lilalo}"/l3prompt
    url_perl_modules=${url_lilalo}/
    perl_modules="Term-VT102 Text-Iconv"
    apt_get_install_this="perl make libmodule-build-perl libc6-dev gcc"
    wget=wget
    uname -a | egrep -qi '(bsd|darwin)' && wget=fetch
    normC='\033[0;39m'
    whiteC='\033[1;37m'
    redC='\033[0;31m'
    greenC='\033[0;32m'
    apt_get_install_deps()
    {
        return 0
        if which apt-get >& /dev/null
        then
            apt-get install -y $apt_get_install_this
        else
            echo "Please install this dependencies manually:"
            echo $apt_get_install_this
            echo "Have you installed this already (y/n)?"
            echo y | read answer
            if echo $answer | grep -q ^[yY]
            then
                true
            else
                echo Please install the dependencies and rerun the script
                exit 1
            fi
        fi
    }
    step()
    {
        msg="$1"
        shift
        printf "${whiteC}""$msg""...${normC}\n"
    #    eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n"
        eval "$@" 2>&1 > log 2>&1 && \
        {
              cat log | sed 's/^/|\ \ \ /'
              printf "${greenC}""Ok\n""${normC}"
        } || \
        {
            cat log | sed 's/^/|\ \ \ /'
            printf "${redC}""Failed\n""${normC}"
        }
    }
    get_user_home()
    {
        uname -a | egrep -qi '(freebsd|darwin)' && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}'
    }
    install_to_users_homes()
    {
        . l3bashrc
        users="$@"
        set -x
        for user in $users
        do
            user_home=`get_user_home "$user"`
            mkdir -p ${user_home}/${lilalo_home}
            mkdir /etc/lilalo/
            cp l3config.pm /etc/lilalo/
            cp l3-agent /usr/local/bin
            cp l3-config /usr/local/bin
            ln -s `which bash` /usr/local/bin/l3script
            chmod 755 /usr/local/bin/l3-{agent,config}
            cp l3bashrc ${user_home}/${lilalo_home}
            cp l3prompt ${user_home}/${lilalo_home}
            chmod 755 ${user_home}/${lilalo_home}/l3prompt
            chown -R $user ${user_home}/${lilalo_home}
            echo l3cd=${lilalo_context}/$user > ${user_home}/${lilalo_rc}
            chown -R $user ${user_home}/${lilalo_rc}
        done
        set +x
    }
    install_to_users_bashrc()
    {
        users="$@"
        for user in $users
        do
            user_home=`get_user_home "$user"`
            grep -q lilalo ${user_home}/.bashrc 2> /dev/null\
            || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc
        done
    }
    install_to_users_bash_profile()
    {
        users="$@"
        for user in $users
        do
            user_home=`get_user_home "$user"`
            grep -q l3-agent ${user_home}/.bash_profile 2> /dev/null \
            || { echo >> ${user_home}/.bash_profile ; cat ${user_home}/.bash_profile | sed '1s/^/l3-agentX/' | tr X '\n' > /tmp/$$$$l3 ; mv /tmp/$$$$l3 ${user_home}/.bash_profile; chown -R ${user} ${user_home}/.bash_profile; }
        done
    }
    show_usage()
    {
        cat <<USAGE
    Usage:
        $0
    USAGE
    }
    show_final_message()
    {
        cat <<FINAL_MESSAGE
    Installation is successfully completed.
    Now restart your shell or relogin
    to start script writing.
    Your current lilalo context is ${lilalo_context}/USER
    If you use xgu.ru backend, your labs will be available at
    http://xgu.ru/l3/${lilalo_context}
    Use commands
     $ l3cd ${lilalo_context%/*/*}/MY-NEW-CONTEXT/${hostname}/USER
     $ l3pwd
    to change and to know your current context.
    For further information see http://xgu.ru/lilalo/ (in Russian).
    Thank you gor using LiLaLo.
    Happy Labbing!
    (don't forget to restart bash or relogin)
    FINAL_MESSAGE
    }
    temp_dir=/tmp/lilalo-install-temp-$$
    mkdir -p ${temp_dir}
    cd ${temp_dir}
    step "Installing dependencies" apt_get_install_deps
    step "Downloading l3bashrc" ${wget} ${url_l3bashrc}
    step "Downloading l3prompt" ${wget} ${url_l3prompt}
    step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}'
    step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }'
    step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }'
    step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
    step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users
    step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users
    cd /
    rm -rf ${temp_dir}
    show_final_message
    
    file.txt
    >
    /home/ivan
    /home/ivan/.bash_history
    
    install
    >
    #!/bin/sh
    hostname=`hostname`
    uname -a | egrep -qi '(freebsd|darwin)' || hostname=`hostname -f`
    ###############################################################################
    #
    # Set this variables before installation:
    lilalo_user=13-10-2014
    lab=NT-LNet
    install_l3bashrc_for_this_users=${users:-"root user"}  # users who will use l3agent and l3script
    lilalo_context="/users/${lilalo_user}/${lab}/${hostname}"
    #
    ###############################################################################
    lilalo_rc=.l3rc
    lilalo_home=.lilalo
    url_lilalo="http://xgu.ru/lilalo"
    url_l3bashrc="${url_lilalo}"/l3bashrc
    url_l3agent="${url_lilalo}"/l3-agent
    url_l3config_pm="${url_lilalo}"/l3config.pm
    url_l3config="${url_lilalo}"/l3-config
    url_l3prompt="${url_lilalo}"/l3prompt
    url_perl_modules=${url_lilalo}/
    perl_modules="Term-VT102 Text-Iconv"
    apt_get_install_this="perl make libmodule-build-perl libc6-dev gcc"
    wget=wget
    uname -a | egrep -qi '(bsd|darwin)' && wget=fetch
    normC='\033[0;39m'
    whiteC='\033[1;37m'
    redC='\033[0;31m'
    greenC='\033[0;32m'
    apt_get_install_deps()
    {
        return 0
        if which apt-get >& /dev/null
        then
            apt-get install -y $apt_get_install_this
        else
            echo "Please install this dependencies manually:"
            echo $apt_get_install_this
            echo "Have you installed this already (y/n)?"
            echo y | read answer
            if echo $answer | grep -q ^[yY]
            then
                true
            else
                echo Please install the dependencies and rerun the script
                exit 1
            fi
        fi
    }
    step()
    {
        msg="$1"
        shift
        printf "${whiteC}""$msg""...${normC}\n"
    #    eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n"
        eval "$@" 2>&1 > log 2>&1 && \
        {
              cat log | sed 's/^/|\ \ \ /'
              printf "${greenC}""Ok\n""${normC}"
        } || \
        {
            cat log | sed 's/^/|\ \ \ /'
            printf "${redC}""Failed\n""${normC}"
        }
    }
    get_user_home()
    {
        uname -a | egrep -qi '(freebsd|darwin)' && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}'
    }
    install_to_users_homes()
    {
        . l3bashrc
        users="$@"
        set -x
        for user in $users
        do
            user_home=`get_user_home "$user"`
            mkdir -p ${user_home}/${lilalo_home}
            mkdir /etc/lilalo/
            cp l3config.pm /etc/lilalo/
            cp l3-agent /usr/local/bin
            cp l3-config /usr/local/bin
            ln -s `which bash` /usr/local/bin/l3script
            chmod 755 /usr/local/bin/l3-{agent,config}
            cp l3bashrc ${user_home}/${lilalo_home}
            cp l3prompt ${user_home}/${lilalo_home}
            chmod 755 ${user_home}/${lilalo_home}/l3prompt
            chown -R $user ${user_home}/${lilalo_home}
            echo l3cd=${lilalo_context}/$user > ${user_home}/${lilalo_rc}
            chown -R $user ${user_home}/${lilalo_rc}
        done
        set +x
    }
    install_to_users_bashrc()
    {
        users="$@"
        for user in $users
        do
            user_home=`get_user_home "$user"`
            grep -q lilalo ${user_home}/.bashrc 2> /dev/null\
            || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc
        done
    }
    install_to_users_bash_profile()
    {
        users="$@"
        for user in $users
        do
            user_home=`get_user_home "$user"`
            grep -q l3-agent ${user_home}/.bash_profile 2> /dev/null \
            || { echo >> ${user_home}/.bash_profile ; cat ${user_home}/.bash_profile | sed '1s/^/l3-agentX/' | tr X '\n' > /tmp/$$$$l3 ; mv /tmp/$$$$l3 ${user_home}/.bash_profile; chown -R ${user} ${user_home}/.bash_profile; }
        done
    }
    show_usage()
    {
        cat <<USAGE
    Usage:
        $0
    USAGE
    }
    show_final_message()
    {
        cat <<FINAL_MESSAGE
    Installation is successfully completed.
    Now restart your shell or relogin
    to start script writing.
    Your current lilalo context is ${lilalo_context}/USER
    If you use xgu.ru backend, your labs will be available at
    http://xgu.ru/l3/${lilalo_context}
    Use commands
     $ l3cd ${lilalo_context%/*/*}/MY-NEW-CONTEXT/${hostname}/USER
     $ l3pwd
    to change and to know your current context.
    For further information see http://xgu.ru/lilalo/ (in Russian).
    Thank you gor using LiLaLo.
    Happy Labbing!
    (don't forget to restart bash or relogin)
    FINAL_MESSAGE
    }
    temp_dir=/tmp/lilalo-install-temp-$$
    mkdir -p ${temp_dir}
    cd ${temp_dir}
    step "Installing dependencies" apt_get_install_deps
    step "Downloading l3bashrc" ${wget} ${url_l3bashrc}
    step "Downloading l3prompt" ${wget} ${url_l3prompt}
    step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}'
    step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }'
    step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }'
    step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users
    step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users
    step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users
    cd /
    rm -rf ${temp_dir}
    show_final_message
    Втр Ноя 28 13:49:28 EET 2017
    
    proc.txt
    >
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    user      3927  0.1  2.1  48096 10836 ?        Ss   Ноя27   2:29 l3-agent
    root      3401  0.2  2.0  47876 10556 ?        Ss   Ноя27   3:19 l3-agent
    root      7700  0.0  0.7  71380  3788 ?        Ss   10:07   0:00 sshd: root@pts/0
    root      7944  0.0  0.7  71380  3720 ?        Ss   10:19   0:00 sshd: user [priv]
    root      8267  0.0  0.7  71288  3680 ?        Ss   10:59   0:00 sshd: root@pts/4
    root      8269  0.0  0.6  24308  3080 pts/4    Ss+  10:59   0:00 -bash
    user      7947  0.0  0.5  24260  2932 pts/2    Ss   10:19   0:00 -bash
    user      8065  0.0  0.5  22260  3044 pts/3    Ss+  10:20   0:00 l3script
    root      7702  0.0  0.5  22168  2860 pts/0    Ss   10:07   0:00 -bash
    root      7779  0.0  0.4  21656  2368 pts/1    Ss   10:07   0:00 l3script
    user      7946  0.0  0.3  71380  1976 ?        S    10:19   0:00 sshd: user@pts/2
    root      1885  0.0  0.3 118184  1560 ?        Sl   Ноя24   0:00 /usr/sbin/rsyslogd -c5
    root      2233  0.0  0.2  49932  1252 ?        Ss   Ноя24   0:00 /usr/sbin/sshd
    101       2260  0.0  0.2  46804  1036 ?        Ss   Ноя24   0:00 /usr/sbin/exim4 -bd -q30m
    root       271  0.0  0.2  21248  1184 ?        Ss   Ноя24   0:00 udevd --daemon
    root      9073  0.0  0.2  18948  1264 pts/1    R+   14:04   0:00 ps uax
    root      9076  0.0  0.1   8164   632 pts/1    S+   14:04   0:00 head -11
    root      9075  0.0  0.1   8156   632 pts/1    S+   14:04   0:00 tee proc.txt
    root      1915  0.0  0.1   4116   656 ?        Ss   Ноя24   0:00 /usr/sbin/acpid
    root      1957  0.0  0.1  22492   896 ?        Ss   Ноя24   0:00 /usr/sbin/cron
    root      2292  0.0  0.1  18368   972 tty6     Ss+  Ноя24   0:00 /sbin/getty 38400 tty6
    root      2290  0.0  0.1  18368   972 tty4     Ss+  Ноя24   0:00 /sbin/getty 38400 tty4
    root      2289  0.0  0.1  18368   972 tty3     Ss+  Ноя24   0:00 /sbin/getty 38400 tty3
    root      2288  0.0  0.1  18368   972 tty2     Ss+  Ноя24   0:00 /sbin/getty 38400 tty2
    root      2291  0.0  0.1  18368   968 tty5     Ss+  Ноя24   0:00 /sbin/getty 38400 tty5
    root      2287  0.0  0.1  18368   968 tty1     Ss+  Ноя24   0:00 /sbin/getty 38400 tty1
    user      7993  0.0  0.1  18164   840 pts/2    S+   10:20   0:00 script -f -c l3script -q /home/user/.lilalo//18672123072488726568-1511857210.script
    root      7747  0.0  0.1  18164   840 pts/0    S+   10:07   0:00 script -f -c l3script -q /root/.lilalo//3394282872625917685-1511856471.script
    root      9074  0.0  0.1  16220   800 pts/1    S+   14:04   0:00 sort -k4 -r
    root         1  0.0  0.1  10648   828 ?        Ss   Ноя24   0:06 init [2]
    user      8064  0.0  0.0  18168   468 pts/2    S+   10:20   0:00 script -f -c l3script -q /home/user/.lilalo//18672123072488726568-1511857210.script
    root      7778  0.0  0.0  18168   468 pts/0    S+   10:07   0:00 script -f -c l3script -q /root/.lilalo//3394282872625917685-1511856471.script
    root      3874  0.0  0.0      0     0 ?        S    Ноя27   0:01 [kworker/0:1]
    root      3358  0.0  0.0      0     0 ?        S    Ноя27   0:00 [flush-202:0]
    root       108  0.0  0.0      0     0 ?        S    Ноя24   0:06 [kworker/0:2]
    root         7  0.0  0.0      0     0 ?        S    Ноя24   0:03 [watchdog/0]
    root        14  0.0  0.0      0     0 ?        S    Ноя24   0:01 [sync_supers]
    root         3  0.0  0.0      0     0 ?        S    Ноя24   0:01 [ksoftirqd/0]
    root       127  0.0  0.0      0     0 ?        S    Ноя24   0:01 [jbd2/xvda1-8]
    root        12  0.0  0.0      0     0 ?        S    Ноя24   0:00 [xenwatch]
    root        13  0.0  0.0      0     0 ?        S    Ноя24   0:00 [xenbus]
    root        89  0.0  0.0      0     0 ?        S    Ноя24   0:00 [scsi_eh_1]
    root        88  0.0  0.0      0     0 ?        S    Ноя24   0:00 [scsi_eh_0]
    root        11  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [netns]
    root         6  0.0  0.0      0     0 ?        S    Ноя24   0:00 [migration/0]
    root        90  0.0  0.0      0     0 ?        S    Ноя24   0:00 [kworker/u:1]
    root         5  0.0  0.0      0     0 ?        S    Ноя24   0:00 [kworker/u:0]
    root         2  0.0  0.0      0     0 ?        S    Ноя24   0:00 [kthreadd]
    root        20  0.0  0.0      0     0 ?        S    Ноя24   0:00 [kswapd0]
    root       378  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [kpsmoused]
    root        16  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [kintegrityd]
    root        19  0.0  0.0      0     0 ?        S    Ноя24   0:00 [khungtaskd]
    root         9  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [khelper]
    root        10  0.0  0.0      0     0 ?        S    Ноя24   0:00 [kdevtmpfs]
    root        17  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [kblockd]
    root        22  0.0  0.0      0     0 ?        S    Ноя24   0:00 [fsnotify_mark]
    root       128  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [ext4-dio-unwrit]
    root        23  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [crypto]
    root         8  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [cpuset]
    root        15  0.0  0.0      0     0 ?        S    Ноя24   0:00 [bdi-default]
    root        87  0.0  0.0      0     0 ?        S<   Ноя24   0:00 [ata_sff]
    root        21  0.0  0.0      0     0 ?        SN   Ноя24   0:00 [ksmd]
    

    Статистика

    Время первой команды журнала10:26:17 2017-11-28
    Время последней команды журнала15:32:12 2017-11-28
    Количество командных строк в журнале101
    Процент команд с ненулевым кодом завершения, %15.84
    Процент синтаксически неверно набранных команд, % 6.93
    Суммарное время работы с терминалом *, час 2.55
    Количество командных строк в единицу времени, команда/мин 0.66
    Частота использования команд
    cat25|===============| 15.62%
    ls15|=========| 9.38%
    grep10|======| 6.25%
    >9|=====| 5.62%
    touch6|===| 3.75%
    egrep4|==| 2.50%
    lsattr4|==| 2.50%
    set4|==| 2.50%
    wc4|==| 2.50%
    find4|==| 2.50%
    ps4|==| 2.50%
    chattr4|==| 2.50%
    sort3|=| 1.88%
    echo3|=| 1.88%
    +'3|=| 1.88%
    top3|=| 1.88%
    install3|=| 1.88%
    xargs3|=| 1.88%
    head3|=| 1.88%
    shopt3|=| 1.88%
    '2|=| 1.25%
    nl2|=| 1.25%
    rm2|=| 1.25%
    clean2|=| 1.25%
    clear2|=| 1.25%
    date2|=| 1.25%
    su2|=| 1.25%
    &1|| 0.62%
    23weqrg43544rrrr1|| 0.62%
    shop1|| 0.62%
    23421|| 0.62%
    ca1|| 0.62%
    za1|| 0.62%
    2334551|| 0.62%
    [0-9]{2}1|| 0.62%
    zsh1|| 0.62%
    {2}'1|| 0.62%
    cd1|| 0.62%
    1[0-9]{2}1|| 0.62%
    sl1|| 0.62%
    23weqrg4351|| 0.62%
    25[0-5])\.){3}([0-9]1|| 0.62%
    {1,2}'1|| 0.62%
    111|| 0.62%
    file.txt1|| 0.62%
    $[$(ps1|| 0.62%
    23weqrg43544rrrrwe231|| 0.62%
    whi1|| 0.62%
    data1|| 0.62%
    25[0-5])$'1|| 0.62%
    [0-9]{2}]1|| 0.62%
    wew34234rtert4531|| 0.62%
    2[0-4][0-9]1|| 0.62%
    vi1|| 0.62%
    tee1|| 0.62%
    which1|| 0.62%
    ____
    *) Интервалы неактивности длительностью 30 минут и более не учитываются

    Справка

    Для того чтобы использовать LiLaLo, не нужно знать ничего особенного: всё происходит само собой. Однако, чтобы ведение и последующее использование журналов было как можно более эффективным, желательно иметь в виду следующее:
    1. В журнал автоматически попадают все команды, данные в любом терминале системы.

    2. Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.

    3. Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
      $ l s-l
      bash: l: command not found
      

    4. Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
      $ test 5 -lt 4
      Обратите внимание на то, что код завершения команды может быть отличен от нуля не только в тех случаях, когда команда была выполнена с ошибкой. Многие команды используют код завершения, например, для того чтобы показать результаты проверки

    5. Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
      $ find / -name abc
      find: /home/devi-orig/.gnome2: Keine Berechtigung
      find: /home/devi-orig/.gnome2_private: Keine Berechtigung
      find: /home/devi-orig/.nautilus/metafiles: Keine Berechtigung
      find: /home/devi-orig/.metacity: Keine Berechtigung
      find: /home/devi-orig/.inkscape: Keine Berechtigung
      ^C
      

    6. Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
      # id
      uid=0(root) gid=0(root) Gruppen=0(root)
      

    7. Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
      $ vi ~/.bashrc
      2a3,5
      >    if [ -f /usr/local/etc/bash_completion ]; then
      >         . /usr/local/etc/bash_completion
      >        fi
      

    8. Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
      $ patch ~/.bashrc
      В данном случае изменения применяются к файлу ~/.bashrc

    9. Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.

      Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.

    10. Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.

    11. Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора

    12. Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.

    13. Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.

    14. Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:

      $ whoami
      
      user
      
      $ #^ Интересно, кто я?
      
      в журнале это будет выглядеть так:
      $ whoami
      
      user
      
      Интересно, кто я?

    15. Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:

      $ whoami
      
      user
      
      $ cat > /dev/null #^ Интересно, кто я?
      
      Программа whoami выводит имя пользователя, под которым 
      мы зарегистрировались в системе.
      -
      Она не может ответить на вопрос о нашем назначении 
      в этом мире.
      
      В журнале это будет выглядеть так:
      $ whoami
      user
      
      Интересно, кто я?
      Программа whoami выводит имя пользователя, под которым
      мы зарегистрировались в системе.

      Она не может ответить на вопрос о нашем назначении
      в этом мире.
      Для разделения нескольких абзацев между собой используйте символ "-", один в строке.

    16. Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=

    17. Содержимое файла может быть показано в журнале. Для этого его нужно вывести с помощью программы cat. Если вывод команды отметить симоволами #!, содержимое файла будет показано в журнале в специально отведённой для этого секции.
    18. Для того чтобы вставить скриншот интересующего вас окна в журнал, нужно воспользоваться командой l3shot. После того как команда вызвана, нужно с помощью мыши выбрать окно, которое должно быть в журнале.
    19. Команды в журнале расположены в хронологическом порядке. Если две команды давались одна за другой, но на разных терминалах, в журнале они будут рядом, даже если они не имеют друг к другу никакого отношения.
      1
          2
      3   
          4
      
      Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.

    О программе

    LiLaLo (L3) расшифровывается как Live Lab Log.
    Программа разработана для повышения эффективности обучения Unix/Linux-системам.
    (c) Игорь Чубин, 2004-2008

    $Id$