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

Содержание

Журнал

Понедельник (09/12/16)

/dev/pts/0
09:14:30
#top
top - 10:14:47 up 2 days, 18:19,  1 user,  load average: 0,07, 0,03, 0,05
Tasks:  50 total,   1 running,  49 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,   143436 used,   363932 free,    23092 buffers
KiB Swap:        0 total,        0 used,        0 free,    49976 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:04.86 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:00.12 ksoftirqd/0
    5 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kworker/u:0
...
    9 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 khelper
   10 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kdevtmpfs
   11 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 netns
   12 root      20   0     0    0    0 S   0,0  0,0   0:00.00 xenwatch
   13 root      20   0     0    0    0 S   0,0  0,0   0:00.07 xenbus
   14 root      20   0     0    0    0 S   0,0  0,0   0:00.98 sync_supers
   15 root      20   0     0    0    0 S   0,0  0,0   0:00.02 bdi-default
   16 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 kintegrityd
   17 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 kblockd
   19 root      20   0     0    0    0 S   0,0  0,0   0:00.06 khungtaskd
09:14:49
#whoami
root
09:15:10
#useradd ivan

09:19:15
#echo $?
0
09:21:40
#useradd ivan
useradd: пользователь «ivan» уже существует
09:22:02
#echo $?
9
09:22:05
#passwd ivan
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
09:24:15
#userdell ivan
l3script: userdell: команда не найдена
09:27:23
#userdel ivan

09:27:33
#useradd --gelp
useradd: неизвестный ключ «--gelp»
Использование: useradd [параметры] ПОÐ
seradd -D
               useradd -D [параметры]
Параметры:
  -b, --base-dir БАЗ_КАТ        базовый каталог для домашнего каталога новой
                                учётной записи
  -c, --comment КОММЕНТАРИЙ     поле GECOS новой учётной записи
  -d, --home-dir ДОМ_КАТ        домашний каталог новой учётной записи
  -D, --defaults                показать или изменить настройки
...
  -p, --password ПАРОЇётной записи
  -r, --system                  создать системную учётную запись
  -R, --root КАТ_CHROOT         каталог, в который выполняется chroot
  -s, --shell ОБОРновой
                                учётной записи
  -u, --uid UID                 пользовательский ID новой учётной записи
  -U, --user-group              создать группу с тем же именем что и у
                                пользователя
  -Z, --selinux-user SEUSER     использовать указанного SEUSER для
                                пользовательского сопоставления SELinux
09:28:11
#useradd --help
Использование: useradd [параметры] ПОÐ
seradd -D
               useradd -D [параметры]
Параметры:
  -b, --base-dir БАЗ_КАТ        базовый каталог для домашнего каталога новой
                                учётной записи
  -c, --comment КОММЕНТАРИЙ     поле GECOS новой учётной записи
  -d, --home-dir ДОМ_КАТ        домашний каталог новой учётной записи
  -D, --defaults                показать или изменить настройки
                                по умолчанию для useradd
...
  -p, --password ПАРОЇётной записи
  -r, --system                  создать системную учётную запись
  -R, --root КАТ_CHROOT         каталог, в который выполняется chroot
  -s, --shell ОБОРновой
                                учётной записи
  -u, --uid UID                 пользовательский ID новой учётной записи
  -U, --user-group              создать группу с тем же именем что и у
                                пользователя
  -Z, --selinux-user SEUSER     использовать указанного SEUSER для
                                пользовательского сопоставления SELinux
09:28:16
#useradd ivan

09:31:21
#userdel ivan

09:31:26
#useradd -m ivan

09:32:09
#passwd ivan
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
09:32:39
#echo $SHELL
/bin/bash
09:34:55
#usermod-h
l3script: usermod-h: команда не найдена
09:36:49
#usermod -h
Использование: usermod [параметры] ПОÐ
, --comment КОММЕНТАРИЙ     новое значение поля GECOS
  -d, --home ДОМ_КАТ            новый домашний каталог учётной записи
  -e, --expiredate ДАТА_УСТ     установить дату окончания действия
                                учётной записи в ДАТА_УСТ
  -f, --inactive НЕАКТИВНОСТЬ   установить период неактивности пароля после
                                устаревания учётной записи равным НЕАКТИВНОСТЬ
  -g, --gid ГРУППА              принудительно назначить первичную ГРУППУ
  -G, --groups ГРУППЫ           список дополнительных ГРУПП
  -a, --append                  добавить пользователя в дополнительные
...
                                имеющимся (не уникальным) UID
  -p, --password ПАРОоль для
                                учётной записи
  -R, --root КАТ_CHROOT         каталог, в который выполняется chroot
  -s, --shell ОБОолочка для учётной
                                записи
  -u, --uid UID                 новый UID для учётной записи
  -U, --unlock                  разблокировать учётную запись
  -Z, --selinux-user SEUSER     новое пользовательское сопоставление
                                SELinux для учётной записи
09:36:52
#usermod -s /bin/bash ivan

09:37:28
#echo $?
0
09:37:40
#useradd -m -s /bin/bash petr

09:39:40
#passwd petr
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
09:39:59
#who
root     pts/0        2016-09-12 10:13 (192.168.16.160)
user     pts/2        2016-09-12 10:40 (192.168.16.160)
09:42:23
#df -h
Файловая система                                       Размер Использовано  Дост Использовано% Cмонтировано в
rootfs                                                    16G        1015M   14G            7% /
udev                                                      10M            0   10M            0% /dev
tmpfs                                                     50M         152K   50M            1% /run
/dev/disk/by-uuid/92b79496-a6c3-450d-a438-766caa8504d8    16G        1015M   14G            7% /
tmpfs                                                    5,0M            0  5,0M            0% /run/lock
tmpfs                                                    100M            0  100M            0% /run/shm
09:51:31
#cd /home/ivan/

09:54:24
#cd /

09:55:28
#cd ~

09:56:04
#cd /

09:56:14
#cd home/

09:56:20
#ls
ivan  petr  user
09:56:22
#cd ~

09:56:39
#cd

09:56:56
#pwd
/root
09:57:08
#ls
install
09:59:37
#ls -l
итого 8
-rw-r--r-- 1 root root 5268 Окт 13  2014 install
10:00:07
#file install
l3script: file: команда не найдена
прошло 49 минут
/dev/pts/0
10:49:58
#apt-get install file
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  libmagic1
НОВЫЕ пакеты, которые будут установлены:
  file libmagic1
обновлено 0, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 256 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 2 616 kB.
Хотите продолжить [Д/н]?
Ош  http://security.debian.org/ wheezy/updates/main libmagic1 amd64 5.11-2+deb7u5
  404  Not Found [IP: 212.211.132.250 80]
Ош  http://security.debian.org/ wheezy/updates/main file amd64 5.11-2+deb7u5
  404  Not Found [IP: 212.211.132.250 80]
Не удалось получить http://security.debian.org/pool/updates/main/f/file/libmagic1_5.11-2+deb7u5_amd64.deb  404  Not Found [IP: 212.211.132.250 80]
Не удалось получить http://security.debian.org/pool/updates/main/f/file/file_5.11-2+deb7u5_amd64.deb  404  Not Found [IP: 212.211.132.250 80]
E: Невозможно получить некоторые архивы, вероятно надо запустить apt-get update или попытаться повторить запуск с ключом --fix-missing
10:51:10
#apt-get update
Получено:1 http://security.debian.org wheezy/updates Release.gpg [1 554 B]
Получено:2 http://security.debian.org wheezy/updates Release [39,0 kB]
Получено:3 http://ftp.ua.debian.org wheezy Release.gpg [2 373 B]
Получено:4 http://ftp.ua.debian.org wheezy-updates Release.gpg [1 554 B]
Получено:5 http://ftp.ua.debian.org wheezy Release [191 kB]
Получено:6 http://security.debian.org wheezy/updates/main Sources [280 kB]
Получено:7 http://ftp.ua.debian.org wheezy-updates Release [151 kB]
Получено:8 http://ftp.ua.debian.org wheezy/main Sources [5 993 kB]
Получено:9 http://security.debian.org wheezy/updates/contrib Sources [14 B]
Получено:10 http://security.debian.org wheezy/updates/non-free Sources [14 B]
...
Получено:36 http://ftp.ua.debian.org wheezy-updates/main Translation-en [4 879 B]
Получено:37 http://ftp.ua.debian.org wheezy-updates/non-free Translation-en [496 B]
Получено 17,4 MБ за 18с (946 kБ/c)
Чтение списков пакетов… Готово
W: Недоступен открытый ключ для следующих ID ключей:
9D6D8F6BC857C906
W: Недоступен открытый ключ для следующих ID ключей:
7638D0442B90D010
W: Недоступен открытый ключ для следующих ID ключей:
7638D0442B90D010
10:51:49
#apt-get install file
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  libmagic1
НОВЫЕ пакеты, которые будут установлены:
  file libmagic1
обновлено 0, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 80 пакетов не обновлено.
Необходимо скачать 258 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 2 616 kB.
...
Получено:2 http://security.debian.org/ wheezy/updates/main file amd64 5.11-2+deb7u9 [53,5 kB]
Получено 258 kБ за 0с (358 kБ/c)
Выбор ранее не выбранного пакета libmagic1:amd64.
(Чтение базы данных … на данный момент установлено 28835 файлов и каталогов.)
Распаковывается пакет libmagic1:amd64 (из файла …/libmagic1_5.11-2+deb7u9_amd64.deb) …
Выбор ранее не выбранного пакета file.
Распаковывается пакет file (из файла …/file_5.11-2+deb7u9_amd64.deb) …
Обрабатываются триггеры для man-db …
Настраивается пакет libmagic1:amd64 (5.11-2+deb7u9) …
Настраивается пакет file (5.11-2+deb7u9) …
10:52:38
#ls
install
10:52:44
#file install
install: POSIX shell script, ASCII text executable
10:52:49
#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
10:54:33
#ls -l /dev/cdrom1
lrwxrwxrwx 1 root root 3 Сен 12 11:31 /dev/cdrom1 -> sr0
10:56:56
#cat /tmp/test
privet
11:05:50
#ls -l /dev/log
srw-rw-rw- 1 root root 0 Сен 12 11:31 /dev/log
11:09:31
#cd /home/ivan/

11:11:52
#cd ..

11:12:11
#cd

прошло 33 минуты
11:45:18
#ls -h
install
11:47:11
#ls --help
ull-iso, long-iso, iso, locale, +ФОРМАТ.
                             ФОРМАТ интерпретируется как в date; если ФОРМАТ
                             -- это ФОРМАТ1<перевод-строки>ФОРМАТ2, ФОРМАТ1½ из
                             применяется к старым файлам, а ФОРМАТ2 к новым;
                             если к СТИÐix-, то он
                             действует только в локали, отличной от POSIX¸ для коротких.
  -t                         сортировать по времени изменения,
                             сначала самые новыемеваемые . и ..
  -T, --tabsize=РАЗМЕР       использовать табуляцию указанного РАЗМЕРА, а не 8
  -b, --escape               печатать экранирующие последовательности
...
служит для изменения значений. Для её установки используйте команду dircolors.
Коды выхода:
 0  всё отлично,
 1  небольшие проблемы (например, недоступен подкаталог),
 2  серьёзная проблема (например, недоступен аргумент командной строки).
Об ошибках в ls сообщайте по адресу bug-coreutils@gnu.org.
Домашняя страница GNU coreutils: <http://www.gnu.org/software/coreutils/>
Справка по работе с программами GNU: <http://www.gnu.org/gethelp/>
Об ошибках в переводе сообщений «ls» сообщайте по адресу <gnu@mx.ru>
Полная документация доступна по команде: info coreutils 'ls invocation'
11:47:18
#mkdir d1

11:48:51
#mkdir -p d2//d3

11:49:41
#ls
d1  d2  install
11:49:45
#cd d2

11:49:49
#ls
d3
11:49:51
#ls -a
.  ..  d3
11:50:08
#cd ..

11:50:11
#ls -a
.   .aptitude      .bash_profile  d1  install  .lilalo   .vim
..  .bash_history  .bashrc        d2  .l3rc    .profile  .viminfo
11:50:12
#apt-get install tree
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
НОВЫЕ пакеты, которые будут установлены:
  tree
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 80 пакетов не обновлено.
Необходимо скачать 43,3 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 112 kB.
Получено:1 http://ftp.ua.debian.org/debian/ wheezy/main tree amd64 1.6.0-1 [43,3 kB]
Получено 43,3 kБ за 0с (208 kБ/c)
Выбор ранее не выбранного пакета tree.
(Чтение базы данных … на данный момент установлено 28863 файла и каталога.)
Распаковывается пакет tree (из файла …/tree_1.6.0-1_amd64.deb) …
Обрабатываются триггеры для man-db …
Настраивается пакет tree (1.6.0-1) …
11:50:52
#cd ..

11:51:06
#pwd
/
11:51:07
#cd

11:51:10
#ls
d1  d2  install
11:51:11
#tree
.
├── d1
├── d2
│   └── d3
└── install
3 directories, 1 file
11:51:16
#cd /

11:51:25
#tree
.
├── bin
│   ├── bash
│   ├── busybox
│   ├── cat
│   ├── chgrp
│   ├── chmod
│   ├── chown
│   ├── chvt
│   ├── cp
...
│   │   │   │   ├── xt_TCPMSS.h
│   │   │   │   ├── xt_TCPOPTSTRIP.h
│   │   │   │   ├── xt_tcpudp.h
│   │   │   │   ├── xt_TEE.h
│   │   │   │   ├── xt_time.h
│   │   │   │   ├── xt_TPROXY.h
│   │   │   │   └── xt_u32.h
│   │   │   ├── netfilter_arp
│   │   │   │   ├── arp_tables.h
│   │   │   │   └── arpt_mangle.h^C
11:51:31
#tree --help
usage: tree [-acdfghilnpqrstuvxACDFQNSUX] [-H baseHREF] [-T title ] [-L level [-R]]
        [-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes]
        [--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset]
        [--filelimit[=]#] [--si] [--timefmt[=]<f>] [<directory list>]
  ------- Listing options -------
  -a            All files are listed.
  -d            List directories only.
  -l            Follow symbolic links like directories.
  -f            Print the full path prefix for each file.
  -x            Stay on current filesystem only.
...
  -n            Turn colorization off always (-C overrides).
  -C            Turn colorization on always.
  ------- XML/HTML options -------
  -X            Prints out an XML representation of the tree.
  -H baseHREF   Prints out HTML format with baseHREF as top directory.
  -T string     Replace the default HTML title and H1 header with string.
  --nolinks     Turn off hyperlinks in HTML output.
  ---- Miscellaneous options ----
  --version     Print version and exit.
  --help        Print usage and this help message and exit.
11:51:55
#touch f1

11:54:13
#ls
bin   etc   initrd.img  lib64       mnt   root  selinux  tmp  vmlinuz
boot  f1    lib         lost+found  opt   run   srv      usr
dev   home  lib32       media       proc  sbin  sys      var
11:54:14
#mv f1 /root/f1

11:54:51
#cd

11:54:53
#ls
d1  d2  f1  install
11:54:54
#> d1/f2

11:56:05
#tree
.
├── d1
│   └── f2
├── d2
│   └── d3
├── f1
└── install
3 directories, 3 files
11:56:08
#tree -d
.
├── d1
└── d2
    └── d3
3 directories
11:56:18
#tree -l
.
├── d1
│   └── f2
├── d2
│   └── d3
├── f1
└── install
3 directories, 3 files
11:56:23
#dd if=/dev/sero of=f3 bs=1M count=100
dd: открытие «/dev/sero»: Нет такого файла или каталога
11:58:50
#dd if=/dev/zero of=f3 bs=1M count=100
100+0 записей считано
100+0 записей написано
 скопировано 104857600 байт (105 MB), 0,788389 c, 133 MB/c
11:58:58
#ls -l
итого 102420
drwxr-xr-x 2 root root      4096 Сен 12 12:56 d1
drwxr-xr-x 3 root root      4096 Сен 12 12:49 d2
-rw-r--r-- 1 root root         0 Сен 12 12:54 f1
-rw-r--r-- 1 root root 104857600 Сен 12 12:58 f3
-rw-r--r-- 1 root root      5268 Окт 13  2014 install
11:59:01
#ls -lh
итого 101M
drwxr-xr-x 2 root root 4,0K Сен 12 12:56 d1
drwxr-xr-x 3 root root 4,0K Сен 12 12:49 d2
-rw-r--r-- 1 root root    0 Сен 12 12:54 f1
-rw-r--r-- 1 root root 100M Сен 12 12:58 f3
-rw-r--r-- 1 root root 5,2K Окт 13  2014 install
11:59:09
#екуу
l3script: $'\320\265\320\272\321\203\321\203': команда не найдена
прошло 62 минуты
13:01:38
#tree
.
├── d1
│   └── f2
├── d2
│   └── d3
├── f1
├── f3
└── install
3 directories, 4 files
13:01:44
#cp -v f1 d1
«f1» -> «d1/f1»
13:02:32
#tree
.
├── d1
│   ├── f1
│   └── f2
├── d2
│   └── d3
├── f1
├── f3
└── install
3 directories, 5 files
13:02:36
#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
...
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
Debian-exim:x:101:103::/var/spool/exim4:/bin/false
user:x:1000:1000:user,,,:/home/user:/bin/bash
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
ivan:x:1001:1001::/home/ivan:/bin/bash
petr:x:1002:1002::/home/petr:/bin/bash
прошло 19 минут
13:22:20
#tree
.
├── d1
│   ├── f1
│   └── f2
├── d2
│   └── d3
├── f1
├── f3
└── install
3 directories, 5 files
прошло 15 минут
13:37:57
#mv d1 d2

13:38:12
#tree
.
├── d2
│   ├── d1
│   │   ├── f1
│   │   └── f2
│   └── d3
├── f1
├── f3
└── install
3 directories, 5 files
13:38:15
#pwd
/root
13:38:23
#ln -s /root/d2/d1/f2 f2

13:39:34
#ls
d2  f1  f2  f3  install
13:39:36
#ls -l
итого 102416
drwxr-xr-x 4 root root      4096 Сен 12 14:38 d2
-rw-r--r-- 1 root root         0 Сен 12 12:54 f1
lrwxrwxrwx 1 root root        14 Сен 12 14:39 f2 -> /root/d2/d1/f2
-rw-r--r-- 1 root root 104857600 Сен 12 12:58 f3
-rw-r--r-- 1 root root      5268 Окт 13  2014 install
13:39:41
#ls -li
итого 102416
653093 drwxr-xr-x 4 root root      4096 Сен 12 14:38 d2
   174 -rw-r--r-- 1 root root         0 Сен 12 12:54 f1
653098 lrwxrwxrwx 1 root root        14 Сен 12 14:39 f2 -> /root/d2/d1/f2
653096 -rw-r--r-- 1 root root 104857600 Сен 12 12:58 f3
653043 -rw-r--r-- 1 root root      5268 Окт 13  2014 install
13:39:46
#ls /root/d2/d1
f1  f2
13:40:08
#ls -li /root/d2/d1
итого 0
653097 -rw-r--r-- 1 root root 0 Сен 12 14:02 f1
653095 -rw-r--r-- 1 root root 0 Сен 12 12:56 f2
13:40:14
#ls -li -color -F /root/d2/d1
итого 0
653095 -rw-r--r-- 1 root 0 Сен 12 12:56 f2
653097 -rw-r--r-- 1 root 0 Сен 12 14:02 f1
13:40:33
#ls -F /root/d2/d1
f1  f2
13:40:52
#pwd
/root
13:41:18
#who > who1.tx

13:41:25
#ls
d2  f1  f2  f3  install  who1.tx

Файлы

  • /etc/passwd
  • /tmp/test
  • install
  • /etc/passwd
    >
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    bin:x:2:2:bin:/bin:/bin/sh
    sys:x:3:3:sys:/dev:/bin/sh
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/bin/sh
    man:x:6:12:man:/var/cache/man:/bin/sh
    lp:x:7:7:lp:/var/spool/lpd:/bin/sh
    mail:x:8:8:mail:/var/mail:/bin/sh
    news:x:9:9:news:/var/spool/news:/bin/sh
    uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
    proxy:x:13:13:proxy:/bin:/bin/sh
    www-data:x:33:33:www-data:/var/www:/bin/sh
    backup:x:34:34:backup:/var/backups:/bin/sh
    list:x:38:38:Mailing List Manager:/var/list:/bin/sh
    irc:x:39:39:ircd:/var/run/ircd:/bin/sh
    gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
    nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
    libuuid:x:100:101::/var/lib/libuuid:/bin/sh
    Debian-exim:x:101:103::/var/spool/exim4:/bin/false
    user:x:1000:1000:user,,,:/home/user:/bin/bash
    sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
    ivan:x:1001:1001::/home/ivan:/bin/bash
    petr:x:1002:1002::/home/petr:/bin/bash
    
    /tmp/test
    >
    privet
    
    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
    

    Статистика

    Время первой команды журнала09:14:30 2016- 9-12
    Время последней команды журнала13:41:25 2016- 9-12
    Количество командных строк в журнале100
    Процент команд с ненулевым кодом завершения, % 4.00
    Процент синтаксически неверно набранных команд, % 4.00
    Суммарное время работы с терминалом *, час 2.02
    Количество командных строк в единицу времени, команда/мин 0.82
    Частота использования команд
    ls25|========================| 24.51%
    cd16|===============| 15.69%
    tree10|=========| 9.80%
    useradd7|======| 6.86%
    pwd4|===| 3.92%
    echo4|===| 3.92%
    apt-get4|===| 3.92%
    passwd3|==| 2.94%
    cat3|==| 2.94%
    mkdir2|=| 1.96%
    dd2|=| 1.96%
    userdel2|=| 1.96%
    who2|=| 1.96%
    mv2|=| 1.96%
    file2|=| 1.96%
    usermod2|=| 1.96%
    touch1|| 0.98%
    userdell1|| 0.98%
    top1|| 0.98%
    екуу1|| 0.98%
    cp1|| 0.98%
    >1|| 0.98%
    usermod-h1|| 0.98%
    whoami1|| 0.98%
    f21|| 0.98%
    df1|| 0.98%
    ln1|| 0.98%
    who1.tx1|| 0.98%
    ____
    *) Интервалы неактивности длительностью 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$