/l3/users/igor-public/nt-ids-2008-dec/linux1.unix.nt/root :1 |
|
#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 |
#grep root /var/log/* | less
|
#less /etc/syslog-ng/syslog-ng.conf
|
#gnokii | less
|
#gnokii 2>&1 | less
|
#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 |
#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); |
#cat /usr/local/bin/sendsms
#!/bin/sh while read message do echo "$message | gnokii --sendsms +380671234567" >> /tmp/gnokii done |
#/etc/init.d/syslog-ng restart
Stopping system logging: syslog-ng. Starting system logging: syslog-ng. |
#echo logger ping | logger
|
#ls /tmp/
gconfd-user keyring-puW96n orbit-user ssh-edRFGr1854 |
#ls /tmp/
gconfd-user keyring-puW96n orbit-user ssh-edRFGr1854 |
#chmod +x /usr/local/bin/sendsms
|
#/etc/init.d/syslog-ng restart
Stopping system logging: syslog-ng. Starting system logging: syslog-ng. |
#echo logger ping | logger
|
#ls /tmp/
gconfd-user gnokii keyring-puW96n orbit-user ssh-edRFGr1854 |
#tail /tmp/gnokii
Dec 15 16:31:34 linux1 logger: logger ping | gnokii --sendsms +380671234567 |
#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); |
#mv /etc/syslog-ng/syslog-ng.conf{,.BACKUP}
|
#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. |
#ls /etc/syslog-ng/
syslog-ng.conf.BACKUP |
#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. |
#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. |
#ls /etc/syslog-ng/
syslog-ng.conf syslog-ng.conf.BACKUP |
#echo privet ot komandy ping | logger
|
#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 |
#!/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 | ||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.
Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
$ l s-l bash: l: command not found |
Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
$ test 5 -lt 4 |
Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
$ 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 |
Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
# id uid=0(root) gid=0(root) Gruppen=0(root) |
Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
$ vi ~/.bashrc
|
Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
$ patch ~/.bashrc |
Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.
Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.
Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.
Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора
Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.
Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.
Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:
$ whoami
user
$ #^ Интересно, кто я?в журнале это будет выглядеть так:
$ whoami
user
Интересно, кто я? |
Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:
$ whoami
user
$ cat > /dev/null #^ Интересно, кто я?
Программа whoami выводит имя пользователя, под которым мы зарегистрировались в системе. - Она не может ответить на вопрос о нашем назначении в этом мире.В журнале это будет выглядеть так:
$ whoami user
|
Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=
1 2 3 4Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.
LiLaLo (L3) расшифровывается как Live Lab Log.
Программа разработана для повышения эффективности обучения Unix/Linux-системам.
(c) Игорь Чубин, 2004-2008