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

Содержание

Журнал

Четверг (12/20/18)

/dev/pts/2
14:06:38
$cd

14:06:47
$sudo
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p
            prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p
            prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num]
            [-g group] [-h host] [-p prompt] [-u user]
            [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num]
            [-g group] [-h host] [-p prompt] [-u user]
            file ...
14:06:54
$su
~
~
~
~
~
~
~
~
~
~
...
~
~
~
~
~
~
~
~
root@m1:~# exit
exit
14:13:39
$ls
aws                    Documents      Music
aws2                   Downloads      Pictures
create-infra_copy2.sh  github.txt     Public
create-infra_copy.sh   log_cons.txt   Templates
Desktop                m0_id_rsa.pub  Videos
14:13:43
$su
~
~
~
~
~
~
~
~
~
~
...
~
~
~
~
~
~
~
~
root@m1:~# exit
exit
прошло 25 минут
14:39:35
$ls
aws                    Downloads      Pictures
aws2                   ec2.yaml       Public
create-infra_copy2.sh  github.txt     Templates
create-infra_copy.sh   log_cons.txt   Videos
Desktop                m0_id_rsa.pub
Documents              Music
14:39:40
$cd aws2

14:39:45
$ls
config     hello.md      README.md
hello2.md  log_cons.txt  scripts
14:39:50
$ls -l
total 24
drwxr-xr-x 2 user user 4096 Dec 20 15:13 config
-rw-r--r-- 1 user user   43 Dec 17 16:46 hello2.md
-rw-r--r-- 1 user user   10 Dec 17 16:22 hello.md
-rw-r--r-- 1 user user 3875 Dec 20 11:13 log_cons.txt
-rw-r--r-- 1 user user    6 Dec 17 16:02 README.md
drwxr-xr-x 2 user user 4096 Dec 20 16:06 scripts
14:39:53
$cd scripts/

14:40:03
$ls -l
total 12
-rw-r--r-- 1 user user 1711 Dec 20 12:25 create-infra.sh
-rwxr-xr-x 1 user user 1833 Dec 20 16:06 create-infrastructure.sh
-rw-r--r-- 1 user user  423 Dec 20 15:13 install-qrencode.sh
14:40:16
$ls -l
                   cd
14:49:59
$ls
aws                    Downloads      Pictures
aws2                   ec2.yaml       Public
create-infra_copy2.sh  github.txt     Templates
create-infra_copy.sh   log_cons.txt   Videos
Desktop                m0_id_rsa.pub
Documents              Music
14:50:04
$su
~
~
~
~
~
~
~
~
~
~
...
~
~
~
~
~
root@m1:~# ls
accessKeys.csv   install         setpasswd
credentials.csv  lilalo-install
root@m1:~# exit
exit
14:53:39
$ls -l
total 76
drwxr-xr-x 5 root root  4096 Dec 20 15:01 aws
drwxr-xr-x 5 user user  4096 Dec 20 15:13 aws2
-rw-r--r-- 1 user user  1688 Dec 20 11:57 create-infra_copy2.sh
-rw-r--r-- 1 user user  1162 Dec 19 16:49 create-infra_copy.sh
drwxr-xr-x 2 user user  4096 Dec 17 12:15 Desktop
drwxr-xr-x 2 user user  4096 Dec 17 12:15 Documents
drwxr-xr-x 2 user user  4096 Dec 18 12:59 Downloads
-rw-r--r-- 1 root root   203 Dec 20 16:26 ec2.yaml
-rw-r--r-- 1 root root     9 Dec 17 15:17 github.txt
-rw-r--r-- 1 user user 12892 Dec 20 16:13 log_cons.txt
-rw-r--r-- 1 user user   397 Dec 19 11:12 m0_id_rsa.pub
drwxr-xr-x 2 user user  4096 Dec 17 12:15 Music
drwxr-xr-x 2 user user  4096 Dec 17 12:15 Pictures
drwxr-xr-x 2 user user  4096 Dec 17 12:15 Public
drwxr-xr-x 2 user user  4096 Dec 17 12:15 Templates
drwxr-xr-x 2 user user  4096 Dec 17 12:15 Videos
14:53:48
$cd .aws

14:54:08
$ls
config  credentials
14:54:11
$cd credentials
bash: cd: credentials: Not a directory
14:54:24
$ls -l
total 8
-rw------- 1 user user  29 Dec 19 14:28 config
-rw------- 1 user user 116 Dec 19 14:28 credentials
14:54:31
$cd /credentials
bash: cd: /credentials: No such file or directory
14:54:45
$ls -a
.  ..  config  credentials
14:56:57
$vim credentials
14:57:58
$[ ]
XhtD810jl
aws_secret_access_key = iLlbqN11eIpD97v/Wb40QFfS1RXoAY77
~
~
~
~
~
~
~
~
...
~
~
~
~
~
~
~
~
~
<entials" 3L, 116C written
прошло 10 минут
15:08:06
$cd

15:08:11
$cd

15:08:13
$cd aws2

15:08:19
$cd scripts/

15:08:26
$ls
create-infra.sh           install-qrencode.sh
create-infrastructure.sh

Пятница (12/21/18)

/dev/pts/0
08:00:44
$cd aws

прошло 24 минуты
08:24:51
$ls
config  scripts
08:25:06
$cd config

08:25:11
$ls
qrencode.conf
08:25:13
$cd ..

08:25:17
$cd scripts

08:25:32
$ls
create-infrastructure.sh  install-qrencode.sh
08:25:57
$sudo apt-get install doker
[sudo] password for user:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package doker
прошло 12 минут
08:38:36
$sudo apt-get install doker
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package doker
08:38:47
$sudo apt-get install docker
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  docker
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 12.8 kB of archives.
After this operation, 42.0 kB of additional disk space will be used.
Get:1 http://ftp.by.debian.org/debian stretch/main amd64 docker amd64 1.5-1+b1 [12.8 kB]
Fetched 12.8 kB in 0s (0 B/s)
Selecting previously unselected package docker.
(Reading database ... 137706 files and directories currently installed.)
Preparing to unpack .../docker_1.5-1+b1_amd64.deb ...
Unpacking docker (1.5-1+b1) ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up docker (1.5-1+b1) ...
08:39:08
$curl -fsSL https://get.docker.com -o get-docker.sh
curl: (23) Failed writing body (0 != 13380)
08:44:07
$cd

08:44:57
$curl -fsSL https://get.docker.com -o get-docker.sh

08:45:15
$sudo chown -R user:user ~user/

08:45:27
$user@instructor:~$ curl -fsSL https://get.docker.com -o get-docker.sh
bash: user@instructor:~$: command not found
08:45:43
$user@instructor:~$ sudo sh get-docker.sh
bash: user@instructor:~$: command not found
08:45:43
$sudo sh get-docker.sh
# Executing docker install script, commit: 4957679
+ sh -c apt-get update -qq >/dev/null
+ sh -c apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sh -c curl -fsSL "https://download.docker.com/linux/debian/gpg" | apt-key add -qq - >/dev/null
Warning: apt-key output should not be parsed (stdout is not a terminal)
+ sh -c echo "deb [arch=amd64] https://download.docker.com/linux/debian stretch edge" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get update -qq >/dev/null
+ sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null
+ sh -c docker version
Client:
...
  Experimental:     false
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:
  sudo usermod -aG docker your-user
Remember that you will have to log out and back in for this to take effect!
WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.
08:51:31
$^C

08:52:13
$sudo usermod -aG docker user

08:52:23
$sudo docker pull busybox
[sudo] password for user:
Using default tag: latest
latest: Pulling from library/busybox
90e01955edcd: Pull complete
Digest: sha256:2a03a6059f21e150ae84b0973863609494aad70f0a80eaeb64bddd8d92465812
Status: Downloaded newer image for busybox:latest
прошла 21 минута
09:14:15
$docker images
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/images/json: dial unix /var/run/docker.sock: connect: permission denied
/dev/pts/0
09:15:35
$docker images
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/images/json: dial unix /var/run/docker.sock: connect: permission denied
09:15:39
$sudo docker images
[sudo] password for user:
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              59788edf1f3e        2 months ago        1.15MB
09:15:47
$sudo docker run -it busybox
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # ls -l
total 36
drwxr-xr-x    2 root     root         12288 Oct  1 22:37 bin
drwxr-xr-x    5 root     root           360 Dec 21 08:22 dev
drwxr-xr-x    1 root     root          4096 Dec 21 08:22 etc
drwxr-xr-x    2 nobody   nogroup       4096 Oct  1 22:37 home
dr-xr-xr-x  176 root     root             0 Dec 21 08:22 proc
drwx------    1 root     root          4096 Dec 21 08:25 root
...
drwxr-xr-x    5 root     root           360 Dec 21 08:22 dev
drwxr-xr-x    1 root     root          4096 Dec 21 08:22 etc
drwxr-xr-x    2 nobody   nogroup       4096 Oct  1 22:37 home
dr-xr-xr-x  177 root     root             0 Dec 21 08:22 proc
drwx------    1 root     root          4096 Dec 21 08:25 root
dr-xr-xr-x   13 root     root             0 Dec 21 08:22 sys
drwxrwxrwt    2 root     root          4096 Oct  1 22:37 tmp
drwxr-xr-x    3 root     root          4096 Oct  1 22:37 usr
drwxr-xr-x    4 root     root          4096 Oct  1 22:37 var
/ # exit
прошло 16 минут
09:32:19
$docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json: dial unix /var/run/docker.sock: connect: permission denied
09:32:32
$sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
09:32:38
$sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
eb17480e18e6        busybox             "sh"                10 minutes ago      Exited (0) 31 seconds ago                       modest_albattani
прошло 14 минут
09:47:01
$sudo docker pull debian:8
[sudo] password for user:
8: Pulling from library/debian
4b105072aa89: Pull complete
Digest: sha256:14e15b63bf3c26dac4f6e782dbb4c9877fb88d7d5978d202cb64065b1e01a88b
Status: Downloaded newer image for debian:8
прошло 40 минут
10:27:54
$ssh m1
The authenticity of host 'm1 (127.0.1.1)' can't be established.
ECDSA key fingerprint is SHA256:jx2YBdjhFE8f40NqCGSRZ1ZaKImHeR0PdtDd89rugeQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'm1' (ECDSA) to the list of known hosts.
user@m1's password:
Linux m1 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
...
config  scripts
user@m1:~/aws$ cd /aws2
user@m1:/aws2$ ls
qrencode.conf
user@m1:/aws2$ ls -l
total 4
-rw-r--r-- 1 root root 805 Dec 20 15:12 qrencode.conf
user@m1:/aws2$ exit
logout
Connection to m1 closed.
прошло >4 часов
14:57:59
$cd aws2

14:58:15
$ls
config  docker  hello2.md  hello.md  log_cons.txt  README.md  scripts
14:58:17
$sudo git add docker/
[sudo] password for user:
15:00:15
$sudo git commit - m 'new folder' docker
error: pathspec '-' did not match any file(s) known to git.
error: pathspec 'm' did not match any file(s) known to git.
error: pathspec 'new folder' did not match any file(s) known to git.
15:00:20
$sudo git commit -m 'new folder' docker
[master 8b8ca64] new folder
 1 file changed, 16 insertions(+)
 create mode 100644 docker/qrencode/dockerfile
15:00:28
$sudo git push
Username for 'https://github.com': kfilonov
Password for 'https://kfilonov@github.com':
To https://github.com/kfilonov/aws2
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/kfilonov/aws2'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
15:01:03
$sudo git pull
# the commit.
Merge made by the 'recursive' strategy.
 log_cons.txt | 151 -------------------------------------------------------------------------------------------
 1 file changed, 151 deletions(-)
 delete mode 100644 log_cons.txt
15:01:21
$sudo git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   scripts/create-infrastructure.sh
no changes added to commit (use "git add" and/or "git commit -a")
15:01:41
$sudo git add scripts/create-infrastructure.sh

/dev/pts/0
15:05:03
$history
    1  scp .ssh/id_rsa.pub m3:~/m1_id_rsa.pub
    2  ls .ssh/
    3  ls .ssh/
    4  ls .ssh/
    5  ls .ssh/
    6  ls .ssh/
    7  ls
    8  ls
    9  ls .ssh/
   10  ls
...
  490  sudo git push
  491  sudo git pull
  492  sudo git status
  493  sudo git add scripts/create-infrastructure.sh
  494  sudo git commit -m 'new changes' scripts/create-infrastructure.sh
  495  sudo git push
  496  sudo git status
  497  exit
  498  ssh m0
  499  history

Статистика

Время первой команды журнала14:06:38 2018-12-20
Время последней команды журнала15:05:03 2018-12-21
Количество командных строк в журнале67
Процент команд с ненулевым кодом завершения, %16.42
Процент синтаксически неверно набранных команд, % 2.99
Суммарное время работы с терминалом *, час 2.92
Количество командных строк в единицу времени, команда/мин 0.38
Частота использования команд
sudo20|=======================| 23.26%
cd16|==================| 18.60%
ls16|==================| 18.60%
docker9|==========| 10.47%
git7|========| 8.14%
apt-get3|===| 3.49%
su3|===| 3.49%
user@instructor:~$2|==| 2.33%
curl2|==| 2.33%
chown1|=| 1.16%
vim1|=| 1.16%
history1|=| 1.16%
[1|=| 1.16%
sh1|=| 1.16%
^C1|=| 1.16%
ssh1|=| 1.16%
usermod1|=| 1.16%
____
*) Интервалы неактивности длительностью 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$