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

Содержание

Журнал

Понедельник (12/15/08)

/dev/pts/1
16:22:01
#grep attempt /var/log/*

16:23:21
#grep root /var/log/*
/var/log/auth.log.0:Dec  3 09:17:01 m5 CRON[20401]: pam_unix(cron:session): session closed for user root
/var/log/auth.log.0:Dec  3 10:17:01 m5 CRON[20514]: pam_unix(cron:session): session opened for user root by (uid=0)
/var/log/auth.log.0:Dec  3 10:17:01 m5 CRON[20514]: pam_unix(cron:session): session closed for user root
/var/log/auth.log.0:Dec  3 11:17:01 m5 CRON[20629]: pam_unix(cron:session): session opened for user root by (uid=0)
/var/log/auth.log.0:Dec  3 11:17:01 m5 CRON[20629]: pam_unix(cron:session): session closed for user root
/var/log/auth.log.0:Dec  3 12:17:01 m5 CRON[20744]: pam_unix(cron:session): session opened for user root by (uid=0)
/var/log/auth.log.0:Dec  3 12:17:01 m5 CRON[20744]: pam_unix(cron:session): session closed for user root
/var/log/auth.log.0:Dec  3 13:17:01 m5 CRON[20859]: pam_unix(cron:session): session opened for user root by (uid=0)
/var/log/auth.log.0:Dec  3 13:17:01 m5 CRON[20859]: pam_unix(cron:session): session closed for user root
/var/log/auth.log.0:Dec  3 14:17:01 m5 CRON[20974]: pam_unix(cron:session): session opened for user root by (uid=0)
...
/var/log/auth.log.0:Dec  6 05:17:01 m5 CRON[25671]: pam_unix(cron:session): session opened for user root by (uid=0)
/var/log/auth.log.0:Dec  6 05:17:01 m5 CRON[25671]: pam_unix(cron:session): session closed for user root
/var/log/auth.log.0:Dec  6 06:17:01 m5 CRON[25707]: pam_unix(cron:session): session opened for user root by (uid=0)
/var/log/auth.log.0:Dec  6 06:17:01 m5 CRON[25707]: pam_unix(cron:session): session closed for user root
/var/log/auth.log.0:Dec  6 06:25:01 m5 CRON[25713]: pam_unix(cron:session): session opened for user root by (uid=0)
/var/log/auth.log.0:Dec  6 06:25:01 m5 CRON[25713]: pam_unix(cron:session): session closed for user root
/var/log/auth.log.0:Dec  6 07:17:01 m5 CRON[25822]: pam_unix(cron:session): session opened for user root by (uid=0)
/var/log/auth.log.0:Dec  6 07:17:01 m5 CRON[25822]: pam_unix(cron:session): session closed for user root
/var/log/auth.log.0:Dec  6 08:17:01 m5 CRON[25855]: pam_unix(cron:session): session opened for user root by (uid=0)
/var/log/auth.log.0:Dec  6 08:17:01 m5 CRON[25855]: pam_unix(cron:session): session closed for user root
16:23:43
#grep root /var/log/* | less
16:24:57
#less /etc/syslog-ng/syslog-ng.conf
16:26:23
#gnokii | less
16:26:31
#gnokii 2>&1 | less
16:27:36
#vi /usr/local/bin/sendsms
--- /tmp/l3-saved-1696.22217.4193	2008-12-15 16:27:42.000000000 +0200
+++ /usr/local/bin/sendsms	2008-12-15 16:28:05.000000000 +0200
@@ -1,5 +1,5 @@
 #!/bin/sh
 while read message
 do
-  echo $message | gnokii --send-sms +380671234567
+  echo "$message | gnokii --sendsms +380671234567" >> /tmp/gnokii
 done
16:28:05
#vi /etc/syslog-ng/syslog-ng.conf
--- /tmp/l3-saved-1696.26015.29536	2008-12-15 16:28:14.000000000 +0200
+++ /etc/syslog-ng/syslog-ng.conf	2008-12-15 16:29:13.000000000 +0200
@@ -220,6 +220,12 @@
         destination(df_ping);
 };
 
+log {
+        source(s_all);
+        filter(f_ping);
+        destination(df_send_sms);
+};
+
 # *.*;auth,authpriv.none          -/var/log/syslog
 log {
         source(s_all);
16:29:13
#cat /usr/local/bin/sendsms
#!/bin/sh
while read message
do
  echo "$message | gnokii --sendsms +380671234567" >> /tmp/gnokii
done
16:29:21
#/etc/init.d/syslog-ng restart
Stopping system logging: syslog-ng.
Starting system logging: syslog-ng.
16:31:02
#echo logger ping | logger

16:31:09
#ls /tmp/
gconfd-user  keyring-puW96n  orbit-user  ssh-edRFGr1854
16:31:14
#ls /tmp/
gconfd-user  keyring-puW96n  orbit-user  ssh-edRFGr1854
16:31:17
#chmod +x /usr/local/bin/sendsms

16:31:28
#/etc/init.d/syslog-ng restart
Stopping system logging: syslog-ng.
Starting system logging: syslog-ng.
16:31:31
#echo logger ping | logger

16:31:34
#ls /tmp/
gconfd-user  gnokii  keyring-puW96n  orbit-user  ssh-edRFGr1854
16:31:36
#tail /tmp/gnokii
Dec 15 16:31:34 linux1 logger: logger ping | gnokii --sendsms +380671234567
16:31:44
#vi /etc/syslog-ng/syslog-ng.conf
--- /tmp/l3-saved-1696.20476.32171	2008-12-15 16:34:58.000000000 +0200
+++ /etc/syslog-ng/syslog-ng.conf	2008-12-15 16:40:44.000000000 +0200
@@ -98,34 +98,34 @@
 # destinations
 
 # some standard log files
-destination df_auth { file("/var/log/auth.log"); };
-destination df_syslog { file("/var/log/syslog"); };
-destination df_cron { file("/var/log/cron.log"); };
-destination df_daemon { file("/var/log/daemon.log"); };
-destination df_kern { file("/var/log/kern.log"); };
-destination df_lpr { file("/var/log/lpr.log"); };
-destination df_mail { file("/var/log/mail.log"); };
-destination df_user { file("/var/log/user.log"); };
-destination df_uucp { file("/var/log/uucp.log"); };
+destination df_auth { file("/var/log/$HOST/$HOST/auth.log"); };
+destination df_syslog { file("/var/log/$HOST/$HOST/syslog"); };
+destination df_cron { file("/var/log/$HOST/$HOST/cron.log"); };
+destination df_daemon { file("/var/log/$HOST/$HOST/daemon.log"); };
+destination df_kern { file("/var/log/$HOST/$HOST/kern.log"); };
+destination df_lpr { file("/var/log/$HOST/$HOST/lpr.log"); };
+destination df_mail { file("/var/log/$HOST/$HOST/mail.log"); };
+destination df_user { file("/var/log/$HOST/$HOST/user.log"); };
+destination df_uucp { file("/var/log/$HOST/$HOST/uucp.log"); };
 
 # these files are meant for the mail system log files
 # and provide re-usable destinations for {mail,cron,...}.info,
 # {mail,cron,...}.notice, etc.
-destination df_facility_dot_info { file("/var/log/$FACILITY.info"); };
-destination df_facility_dot_notice { file("/var/log/$FACILITY.notice"); };
-destination df_facility_dot_warn { file("/var/log/$FACILITY.warn"); };
-destination df_facility_dot_err { file("/var/log/$FACILITY.err"); };
-destination df_facility_dot_crit { file("/var/log/$FACILITY.crit"); };
+destination df_facility_dot_info { file("/var/log/$HOST/$HOST/$FACILITY.info"); };
+destination df_facility_dot_notice { file("/var/log/$HOST/$HOST/$FACILITY.notice"); };
+destination df_facility_dot_warn { file("/var/log/$HOST/$HOST/$FACILITY.warn"); };
+destination df_facility_dot_err { file("/var/log/$HOST/$HOST/$FACILITY.err"); };
+destination df_facility_dot_crit { file("/var/log/$HOST/$HOST/$FACILITY.crit"); };
 
 # these files are meant for the news system, and are kept separated
 # because they should be owned by "news" instead of "root"
-destination df_news_dot_notice { file("/var/log/news/news.notice" owner("news")); };
-destination df_news_dot_err { file("/var/log/news/news.err" owner("news")); };
-destination df_news_dot_crit { file("/var/log/news/news.crit" owner("news")); };
+destination df_news_dot_notice { file("/var/log/$HOST/$HOST/news/news.notice" owner("news")); };
+destination df_news_dot_err { file("/var/log/$HOST/$HOST/news/news.err" owner("news")); };
+destination df_news_dot_crit { file("/var/log/$HOST/$HOST/news/news.crit" owner("news")); };
 
 # some more classical and useful files found in standard syslog configurations
-destination df_debug { file("/var/log/debug"); };
-destination df_messages { file("/var/log/messages"); };
+destination df_debug { file("/var/log/$HOST/$HOST/debug"); };
+destination df_messages { file("/var/log/$HOST/$HOST/messages"); };
 
 # pipes
 # a console to view log messages under X
@@ -192,7 +192,7 @@
 };
 
 destination df_ping { 
-     file('/var/log/ping');
+     file('/var/log/$HOST/$HOST/ping');
 };
 
 destination df_send_sms { 
@@ -207,7 +207,7 @@
 
 # these rules provide the same behavior as the commented original syslogd rules
 
-# auth,authpriv.*                 /var/log/auth.log
+# auth,authpriv.*                 /var/log/$HOST/$HOST/auth.log
 log {
         source(s_all);
         filter(f_auth);
@@ -226,7 +226,7 @@
         destination(df_send_sms);
 };
 
-# *.*;auth,authpriv.none          -/var/log/syslog
+# *.*;auth,authpriv.none          -/var/log/$HOST/$HOST/syslog
 log {
         source(s_all);
         filter(f_syslog);
@@ -234,56 +234,56 @@
 };
 
 # this is commented out in the default syslog.conf
-# cron.*                         /var/log/cron.log
+# cron.*                         /var/log/$HOST/$HOST/cron.log
 #log {
 #        source(s_all);
 #        filter(f_cron);
 #        destination(df_cron);
 #};
 
-# daemon.*                        -/var/log/daemon.log
+# daemon.*                        -/var/log/$HOST/$HOST/daemon.log
 log {
         source(s_all);
         filter(f_daemon);
         destination(df_daemon);
 };
 
-# kern.*                          -/var/log/kern.log
+# kern.*                          -/var/log/$HOST/$HOST/kern.log
 log {
         source(s_all);
         filter(f_kern);
         destination(df_kern);
 };
 
-# lpr.*                           -/var/log/lpr.log
+# lpr.*                           -/var/log/$HOST/$HOST/lpr.log
 log {
         source(s_all);
         filter(f_lpr);
         destination(df_lpr);
 };
 
-# mail.*                          -/var/log/mail.log
+# mail.*                          -/var/log/$HOST/$HOST/mail.log
 log {
         source(s_all);
         filter(f_mail);
         destination(df_mail);
 };
 
-# user.*                          -/var/log/user.log
+# user.*                          -/var/log/$HOST/$HOST/user.log
 log {
         source(s_all);
         filter(f_user);
         destination(df_user);
 };
 
-# uucp.*                          /var/log/uucp.log
+# uucp.*                          /var/log/$HOST/$HOST/uucp.log
 log {
         source(s_all);
         filter(f_uucp);
         destination(df_uucp);
 };
 
-# mail.info                       -/var/log/mail.info
+# mail.info                       -/var/log/$HOST/$HOST/mail.info
 log {
         source(s_all);
         filter(f_mail);
@@ -291,7 +291,7 @@
         destination(df_facility_dot_info);
 };
 
-# mail.warn                       -/var/log/mail.warn
+# mail.warn                       -/var/log/$HOST/$HOST/mail.warn
 log {
         source(s_all);
         filter(f_mail);
@@ -299,7 +299,7 @@
         destination(df_facility_dot_warn);
 };
 
-# mail.err                        /var/log/mail.err
+# mail.err                        /var/log/$HOST/$HOST/mail.err
 log {
         source(s_all);
         filter(f_mail);
@@ -307,7 +307,7 @@
         destination(df_facility_dot_err);
 };
 
-# news.crit                       /var/log/news/news.crit
+# news.crit                       /var/log/$HOST/$HOST/news/news.crit
 log {
         source(s_all);
         filter(f_news);
@@ -315,7 +315,7 @@
         destination(df_news_dot_crit);
 };
 
-# news.err                        /var/log/news/news.err
+# news.err                        /var/log/$HOST/$HOST/news/news.err
 log {
         source(s_all);
         filter(f_news);
@@ -323,7 +323,7 @@
         destination(df_news_dot_err);
 };
 
-# news.notice                     /var/log/news/news.notice
+# news.notice                     /var/log/$HOST/$HOST/news/news.notice
 log {
         source(s_all);
         filter(f_news);
@@ -334,7 +334,7 @@
 
 # *.=debug;\
 #         auth,authpriv.none;\
-#         news.none;mail.none     -/var/log/debug
+#         news.none;mail.none     -/var/log/$HOST/$HOST/debug
 log {
         source(s_all);
         filter(f_debug);
@@ -345,7 +345,8 @@
 # *.=info;*.=notice;*.=warn;\
 #         auth,authpriv.none;\
 #         cron,daemon.none;\
-#         mail,news.none          -/var/log/messages
+
+#         mail,news.none          -/var/log/$HOST/$HOST/messages
 log {
         source(s_all);
         filter(f_messages);
16:40:44
#mv /etc/syslog-ng/syslog-ng.conf{,.BACKUP}

16:40:51
#apt-get install syslog-ng --reinstall
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  python2.4-minimal python2.4 libttf2 cpp-4.2
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 374 not upgraded.
Need to get 0B/130kB of archives.
After this operation, 0B of additional disk space will be used.
Do you want to continue [Y/n]?
(Reading database ... 44555 files and directories currently installed.)
Preparing to replace syslog-ng 2.0.9-4.1 (using .../syslog-ng_2.0.9-4.1_i386.deb) ...
Unpacking replacement syslog-ng ...
Setting up syslog-ng (2.0.9-4.1) ...
Stopping system logging: syslog-ng.
Starting system logging: syslog-ngError opening configuration file; filename='/etc/syslog-ng/syslog-ng.conf', error='No such file or directory (2)'
 failed!
invoke-rc.d: initscript syslog-ng, action "restart" failed.
16:41:10
#ls /etc/syslog-ng/
syslog-ng.conf.BACKUP
16:41:20
#dpkg -P syslog-ng
(Reading database ... 44555 files and directories currently installed.)
Removing syslog-ng ...
Stopping system logging: syslog-ng failed!
invoke-rc.d: initscript syslog-ng, action "stop" failed.
Purging configuration files for syslog-ng ...
dpkg - warning: while removing syslog-ng, directory `/etc/syslog-ng' not empty so not removed.
16:41:28
#apt-get install syslog-ng --reinstall
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  python2.4-minimal python2.4 libttf2 cpp-4.2
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
  syslog-ng
0 upgraded, 1 newly installed, 0 to remove and 374 not upgraded.
Need to get 0B/130kB of archives.
After this operation, 434kB of additional disk space will be used.
Selecting previously deselected package syslog-ng.
(Reading database ... 44530 files and directories currently installed.)
Unpacking syslog-ng (from .../syslog-ng_2.0.9-4.1_i386.deb) ...
Setting up syslog-ng (2.0.9-4.1) ...
Starting system logging: syslog-ng.
16:41:34
#ls /etc/syslog-ng/
syslog-ng.conf  syslog-ng.conf.BACKUP
16:41:36
#echo privet ot komandy ping | logger

прошло 13 минут
16:55:22
#tail /var/log/messages
Dec 15 16:51:45 linux1 syslog-ng[18282]: syslog-ng starting up; version='2.0.9'
Dec 15 16:53:48 linux1 logger: this is critical error
Dec 15 16:55:22 linux1 logger: privet ot komandy ping
Dec 15 16:56:51 linux1 syslog-ng[18282]: Termination requested via signal, terminating;
Dec 15 16:56:51 linux1 syslog-ng[18282]: syslog-ng shutting down; version='2.0.9'
Dec 15 16:56:51 linux1 syslog-ng[18368]: syslog-ng starting up; version='2.0.9'
Dec 15 16:56:55 linux1 logger: this is critical error
Dec 15 16:58:43 linux1 logger: this is critical error
Dec 15 16:58:44 linux1 logger: this is critical error
Dec 15 16:58:44 linux1 logger: this is critical error

Файлы

  • /usr/local/bin/sendsms
  • /usr/local/bin/sendsms
    >
    #!/bin/sh
    while read message
    do
      echo "$message | gnokii --sendsms +380671234567" >> /tmp/gnokii
    done
    

    Статистика

    Время первой команды журнала16:22:01 2008-12-15
    Время последней команды журнала16:55:22 2008-12-15
    Количество командных строк в журнале27
    Процент команд с ненулевым кодом завершения, % 3.70
    Процент синтаксически неверно набранных команд, % 0.00
    Суммарное время работы с терминалом *, час 0.56
    Количество командных строк в единицу времени, команда/мин 0.81
    Частота использования команд
    ls5|==============| 14.29%
    less4|===========| 11.43%
    echo3|========| 8.57%
    logger3|========| 8.57%
    vi3|========| 8.57%
    grep3|========| 8.57%
    tail2|=====| 5.71%
    gnokii2|=====| 5.71%
    apt-get2|=====| 5.71%
    /etc/init.d/syslog-ng2|=====| 5.71%
    dpkg1|==| 2.86%
    &1|==| 2.86%
    cat1|==| 2.86%
    11|==| 2.86%
    chmod1|==| 2.86%
    mv1|==| 2.86%
    ____
    *) Интервалы неактивности длительностью 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$