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

Содержание

Журнал

Среда (12/19/18)

/dev/pts/5
12:17:30
$apt-cache search python pip | grep python
python-apipkg - namespace control and lazy-import mechanism for Python
python3-apipkg - namespace control and lazy-import mechanism for Python 3
python-pyassimp - 3D model import library (Python bindings)
python-calabash - Bash-style pipelining syntax for Python generators
python-django-pipeline - Asset packaging library for Django
python-django-pipeline-doc - Documentation for Django Pipeline library
python3-django-pipeline - Asset packaging library for Django (Python3 version)
python-easyprocess - easy to use python subprocess interface - Python 2.X
python3-easyprocess - easy to use python subprocess interface - Python 3.X
python-joblib - tools to provide lightweight pipelining in Python
...
python-ruffus - Python computation pipeline library widely used in bioinformatics
python-ruffus-doc - documentation for python-ruffus computation pipeline library
python3-ruffus - Python3 computation pipeline library widely used in bioinformatics
pythonpy - 'python -c', with tab completion and shorthand
python-sclapp - framework for Python command-line applications
python-wand - Python interface for ImageMagick library (Python 2 build)
python3-wand - Python interface for ImageMagick library (Python 3 build)
python-wheel - built-package format for Python
python-wheel-common - built-package format for Python
python3-wheel - built-package format for Python
12:18:01
$sudo apt-get install python-pip
[sudo] password for user:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libexpat1-dev libpython-all-dev libpython-dev libpython2.7-dev python-all
  python-all-dev python-crypto python-dbus python-dev python-keyring
  python-keyrings.alt python-pip-whl python-secretstorage python-wheel
  python-xdg python2.7-dev
Suggested packages:
...
Setting up python-pip (9.0.1-2) ...
Setting up python2.7-dev (2.7.13-2+deb9u3) ...
Setting up python-all (2.7.13-2) ...
Setting up python-xdg (0.25-4) ...
Setting up python-secretstorage (2.3.1-2) ...
Setting up libpython-dev:amd64 (2.7.13-2) ...
Setting up python-keyring (10.1-1) ...
Setting up python-dev (2.7.13-2) ...
Setting up libpython-all-dev:amd64 (2.7.13-2) ...
Setting up python-all-dev (2.7.13-2) ...
12:23:50
$aws configure
AWS Access Key ID [None]: XXXXXX5YKZDPMPLU7NMA
AWS Secret Access Key [None]: XXXXXXXXi2nOUIKxfRV1/ETIM2/EUR7Ks1Hr1QJ+
Default region name [None]: eu-west-1
Default output format [None]:
/dev/pts/12
12:24:53
$ls
1.json  credentials.csv  Documents  github.txt     Music     Public  Templates
aws     Desktop          Downloads  m0_id_rsa.pub  Pictures  q-      Videos
12:24:54
$grep user10 credentials.csv
user10,XXXXXXUr)8qx,XXXXXX5YKZDPMPLU7NMA,XXXXXXXXi2nOUIKxfRV1/ETIM2/EUR7Ks1Hr1QJ+,https://chubin.signin.aws.amazon.com/console
12:24:59
$grep user10 credentials.csv | tr ',' '\n'
user10
XXXXXXUr)8qx
XXXXXX5YKZDPMPLU7NMA
XXXXXXXXi2nOUIKxfRV1/ETIM2/EUR7Ks1Hr1QJ+
https://chubin.signin.aws.amazon.com/console
/dev/pts/5
12:29:16
$aws describe-instances | less -R
12:29:59
$aws ec2 describe-instances | less -R
12:30:25
$aws ec2 describe-instances | jq .Reservations | less -r
12:30:38
$aws ec2 describe-instances | jq .Reservations | less -R
12:30:52
$aws ec2 describe-instances
{
    "Reservations": [
        {
            "Instances": [
                {
                    "Monitoring": {
                        "State": "disabled"
                    },
                    "PublicDnsName": "ec2-52-19-122-40.eu-west-1.compute.amazonaws.com",
                    "State": {
...
                    },
                    "AmiLaunchIndex": 0
                }
            ],
            "ReservationId": "r-0c0e59eec99ee07d6",
            "Groups": [],
            "OwnerId": "886677986286"
        }
    ]
}
12:31:49
$aws ec2 describe-instances --output table
-------------------------------------------------------------------------------------
|                                 DescribeInstances                                 |
+-----------------------------------------------------------------------------------+
||                                  Reservations                                   ||
|+---------------------------------+-----------------------------------------------+|
||  OwnerId                        |  886677986286                                 ||
||  ReservationId                  |  r-0ebb430cd3f1917cf                          ||
|+---------------------------------+-----------------------------------------------+|
|||                                   Instances                                   |||
||+------------------------+------------------------------------------------------+||
...
||||                                    State                                    ||||
|||+-------------------------------+---------------------------------------------+|||
||||  Code                         |  16                                         ||||
||||  Name                         |  running                                    ||||
|||+-------------------------------+---------------------------------------------+|||
||||                                    Tags                                     ||||
|||+-----------------------------+-----------------------------------------------+|||
||||  Key                        |  Name                                         ||||
||||  Value                      |  user3-noIP                                   ||||
|||+-----------------------------+-----------------------------------------------+|||
12:32:31
$aws ec2 describe-instances | less -R
12:36:39
$aws ec2 describe-instances help
       Recently terminated instances might appear  in  the  returned  results.
       This interval is usually less than one hour.
       If  you  describe instances in the rare case where an Availability Zone
       is experiencing a service disruption and you specify instance IDs  that
       are  in  the  affected zone, or do not specify any instance IDs at all,
       the call fails. If you describe instances and specify only instance IDs
       that are in an unaffected zone, the call works normally.
       See also: AWS API Documentation
       See 'aws help' for descriptions of global parameters.
       describe-instances  is a paginated operation. Multiple API calls may be
...
NAME
       describe-instances -
DESCRIPTION
       Describes one or more of your instances.
       If you specify one or more instance IDs, Amazon EC2 returns information
       for those instances. If you do not specify  instance  IDs,  Amazon  EC2
       returns  information  for  all  relevant  instances.  If you specify an
       instance ID that is not valid, an error is returned. If you specify  an
       instance  that  you  do  not  own,  it  is not included in the returned
       results.
12:38:01
$# JMSEPath

12:38:07
$aws
1.json           credentials.csv  .lesshst         q-
aws/             Desktop/         .lilalo/         .ssh/
.aws/            Documents/       .local/          Templates/
.bash_history    Downloads/       m0_id_rsa.pub    Videos/
.bash_logout     .gitconfig       .mozilla/        .viminfo
.bash_profile    github.txt       Music/           .vimrc
.bashrc          .gnupg/          Pictures/
.cache/          .ICEauthority    .profile
.config/         .l3rc            Public/
12:38:07
$complete -C aws_completer aws

12:39:33
$aws
Display all 171 possibilities? (y or n)
12:39:33
$vim ~/.bashrc
12:40:08
$complete -C aws_completer aws

12:40:35
$aws ec2 describe-
describe-account-attributes
describe-addresses
describe-aggregate-id-format
describe-availability-zones
describe-bundle-tasks
describe-byoip-cidrs
describe-capacity-reservations
describe-classic-link-instances
describe-client-vpn-authorization-rules
describe-client-vpn-connections
...
describe-conversion-tasks
describe-customer-gateways
describe-dhcp-options
describe-egress-only-internet-gateways
describe-elastic-gpus
describe-export-tasks
describe-fleet-history
describe-fleet-instances
describe-fleets
describe-flow-logs
12:40:35
$aws ec2 describe-instance
describe-instance-attribute
describe-instance-credit-specifications
describe-instances
describe-instance-status
12:40:35
$aws ec2 describe-instance
describe-instance-attribute
describe-instance-credit-specifications
describe-instances
describe-instance-status
12:45:23
$ssh ec2-52-19-122-40.eu-west-1.compute.amazonaws.com
The authenticity of host 'ec2-52-19-122-40.eu-west-1.compute.amazonaws.com (52.19.122.40)' can't be established.
ECDSA key fingerprint is SHA256:z9R5y0W1osJltlVnCjsBv8/SdlKScFdIlxOFicYTZdg.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-52-19-122-40.eu-west-1.compute.amazonaws.com,52.19.122.40' (ECDSA) to the list of known hosts.
@ip-10-2-1-85:~[ec2-user@ip-10-2-1-85 ~]$
@ip-10-2-1-85:~[ec2-user@ip-10-2-1-85 ~]$
@ip-10-2-1-85:~[ec2-user@ip-10-2-1-85 ~]$
@ip-10-2-1-85:~[ec2-user@ip-10-2-1-85 ~]$
@ip-10-2-1-85:~[ec2-user@ip-10-2-1-85 ~]$ aws
aws            aws_completer
...
describe-instance-attribute
describe-instance-credit-specifications
describe-instances
describe-instance-status
[ec2-user@ip-10-2-1-85 ~]$
@ip-10-2-1-85:~[ec2-user@ip-10-2-1-85 ~]$
@ip-10-2-1-85:~[ec2-user@ip-10-2-1-85 ~]$
@ip-10-2-1-85:~[ec2-user@ip-10-2-1-85 ~]$ exit
logout
Connection to ec2-52-19-122-40.eu-west-1.compute.amazonaws.com closed.
12:46:27
$sudo pip install saws
[sudo] password for user:
Collecting saws
  Downloading https://files.pythonhosted.org/packages/ef/7a/37581ad99e8aefc9976c463fb7741593e1ff91dea2228ec5f889ba6b9e33/saws-0.4.3.tar.gz (46kB)
    100% |████████████████████████████████| 51kB 643kB/s
Requirement already satisfied: awscli<2.0.0,>=1.7.46 in /usr/local/lib/python2.7/dist-packages (from saws)
Collecting click<7.0,>=4.0 (from saws)
  Downloading https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl (71kB)
    100% |████████████████████████████████| 71kB 1.6MB/s
Collecting configobj<6.0.0,>=5.0.6 (from saws)
  Downloading https://files.pythonhosted.org/packages/64/61/079eb60459c44929e684fa7d9e2fdca403f67d64dd9dbac27296be2e0fab/configobj-5.0.6.tar.gz
...
Requirement already satisfied: python-dateutil<3.0.0,>=2.1; python_version >= "2.7" in /usr/local/lib/python2.7/dist-packages (from botocore==1.12.68->awscli<2.0.0,>=1.7.46->saws)
Requirement already satisfied: urllib3<1.25,>=1.20; python_version == "2.7" in /usr/local/lib/python2.7/dist-packages (from botocore==1.12.68->awscli<2.0.0,>=1.7.46->saws)
Building wheels for collected packages: saws, configobj
  Running setup.py bdist_wheel for saws ... done
  Stored in directory: /root/.cache/pip/wheels/d5/76/41/cd49100cd35049d460ec69eea00501e2c7805febafd26fc911
  Running setup.py bdist_wheel for configobj ... done
  Stored in directory: /root/.cache/pip/wheels/f1/e4/16/4981ca97c2d65106b49861e0b35e2660695be7219a2d351ee0
Successfully built saws configobj
Installing collected packages: click, configobj, wcwidth, prompt-toolkit, pygments, saws
Successfully installed click-6.7 configobj-5.0.6 prompt-toolkit-1.0.15 pygments-2.3.1 saws-0.4.3 wcwidth-0.1.7
12:46:40
$saws
No resource cache found
Refreshing resources...
  Refreshing instance ids...
  Refreshing instance tag keys...
  Refreshing instance tag values...
  Refreshing bucket names...
  Refreshing bucket uris...
Done refreshing
Version: 0.4.3
Theme: vim
...
              c2 start-instances --instance-ids
               accept-reserved-instances-exchange-quote
               accept-transit-gateway-vpc-attachment
               accept-vpc-endpoint-connections
               accept-vpc-peering-connection
               advertise-byoip-cidr
               allocate-address
saws> exit
saws>
saws>
12:47:03
$vim ~/.sawrc
12:48:19
$saws
No resource cache found
Refreshing resources...
  Refreshing instance ids...
  Refreshing instance tag keys...
  Refreshing instance tag values...
  Refreshing bucket names...
  Refreshing bucket uris...
Done refreshing
Version: 0.4.3
Theme: vim
...
                        describe-account-attributes
                        describe-addresses
                        describe-aggregate-id-format
                       i
                        describe-availability-zones
                        describe-bundle-tasks
                        describe-byoip-cidrs
saws> exit
saws>
saws>
12:49:02
$vim ~/.sawrc
12:49:06
$~

12:49:12
$saws
No resource cache found
Refreshing resources...
  Refreshing instance ids...
  Refreshing instance tag keys...
  Refreshing instance tag values...
  Refreshing bucket names...
  Refreshing bucket uris...
Done refreshing
Version: 0.4.3
Theme: vim
saws>
saws> exit
saws>
saws> exit
saws>
saws>
12:49:59
$ls -alt | head
total 164
-rw-r--r--  1 user user  611 Dec 19 14:49 .sawsrc
drwxr-xr-x  2 user root 4096 Dec 19 14:49 .lilalo
-rw-r--r--  1 user user 1506 Dec 19 14:49 .saws.log
drwxr-xr-x 19 user user 4096 Dec 19 14:49 .
-rw-------  1 user user 8213 Dec 19 14:49 .viminfo
-rw-r--r--  1 user user   36 Dec 19 14:47 .saws-history
-rw-r--r--  1 user user 2256 Dec 19 14:46 .saws.shortcuts
-rw-r--r--  1 user user  751 Dec 19 14:40 .bashrc
-rw-------  1 user user   42 Dec 19 14:37 .lesshst
12:50:05
$vim ~/.saws
12:50:05
$vim ~/.saws
12:50:05
$vim ~/.saws
12:50:05
$vim ~/.sawsrc
12:50:26
$saws
No resource cache found
Refreshing resources...
  Refreshing instance ids...
  Refreshing instance tag keys...
  Refreshing instance tag values...
  Refreshing bucket names...
  Refreshing bucket uris...
Done refreshing
Version: 0.4.3
Theme: xcode
...
           apigatewaymanagementapi
           apigatewayv2
saws>
saws>
saws>
saws>
saws>
saws>
saws>
saws>
прошло 22 минуты
13:12:44
$No resource cache found
Refreshing resources...
  Refreshing instance ids...
  Refreshing instance tag keys...
Traceback (most recent call last):
  File "/usr/local/bin/saws", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/saws/main.py", line 42, in cli
    saws.aws_cli.set_return_value(None)
UnboundLocalError: local variable 'saws' referenced before assignment
/dev/pts/12
13:13:01
$vim ~/.bashrc
/dev/pts/5
13:13:18
$exit
There are stopped jobs.
13:13:24
$exit
exit
There are stopped jobs.

Статистика

Время первой команды журнала12:17:30 2018-12-19
Время последней команды журнала13:13:24 2018-12-19
Количество командных строк в журнале41
Процент команд с ненулевым кодом завершения, % 7.32
Процент синтаксически неверно набранных команд, % 0.00
Суммарное время работы с терминалом *, час 0.93
Количество командных строк в единицу времени, команда/мин 0.73
Частота использования команд
aws14|==========================| 26.42%
vim8|===============| 15.09%
less5|=========| 9.43%
saws4|=======| 7.55%
grep3|=====| 5.66%
complete2|===| 3.77%
sudo2|===| 3.77%
jq2|===| 3.77%
ls2|===| 3.77%
exit2|===| 3.77%
#1|=| 1.89%
head1|=| 1.89%
pip1|=| 1.89%
No1|=| 1.89%
apt-get1|=| 1.89%
~1|=| 1.89%
ssh1|=| 1.89%
apt-cache1|=| 1.89%
tr1|=| 1.89%
____
*) Интервалы неактивности длительностью 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$