Автологгирование терминальной сессии.

Автор symon2014, 25 июля 2017, 18:21:38

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

symon2014

Здравствуйте, решил поместить тему здесь, поскольку на минте, но задача о скрипте, который хочется пристроить.
Вот здесь
нашёл статейку , захотел себе сделать, поскольку имею привычку издеваться над осью, и иногда хочется посмотреть на свои злодейства. Программист почти от слова никак, но в статье камней не увидел. Скрипт добавил, папку для лога создал, ребутнулся и тормознул. В иксы не идёт категорически, пока сидел в консоли , видел жалобу на строку - [#Record terminal sessions] - команда не найдена, закомментил. В консоли лог пишет, но в иксы зайти не даёт, выхлоп под спойлером.
Открыть содержимое (спойлер)
Скрипт запущен Вт 25 июл 2017 09:14:39
msuser@msuser ~ $ nndtvoju mamu imel
tvoju: команда не найдена
msuser@msuser ~ $ sam durak
Программа 'sam' на данный момент не установлена. Вы можете установить её, выполнив:
sudo apt install simon
msuser@msuser ~ $ pipeczdec
pizdec: команда не найдена
msuser@msuser ~ $ startx


X.Org X Server 1.18.4
Release Date: 2016-07-19
X Protocol Version 11, Revision 0
Build Operating System: Linux 4.4.0-83-generic x86_64 Ubuntu
Current Operating System: Linux msuser 4.10.0-27-generic #30~16.04.2-Ubuntu SMP Thu Jun 29 16:07:46 UTC 2017 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.10.0-27-generic root=UUID=2ac20a70-9d3c-4077-abf5-6e820594e383 ro
Build Date: 17 July 2017 05:05:12PM
xorg-server 2:1.18.4-0ubuntu0.3 (For technical support please see http://www.ubuntu.com/support)
Current version of pixman: 0.33.6
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/home/msuser/.local/share/xorg/Xorg.1.log", Time: Tue Jul 25 09:16:36 2017
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(EE)
Fatal server error:
(EE) parse_vt_settings: Cannot open /dev/tty0 (Permission denied)
(EE)
(EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
(EE) Please also check the log file at "/home/msuser/.local/share/xorg/Xorg.1.log" for additional information.
(EE)
(EE) Server terminated with error (1). Closing log file.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
Не удалось получить файловый дескриптор, указывающий на консоль
msuser@msuser ~ $
[свернуть]
Чего хочу? Просто чтобы вся история писалась в папку с логом. И наверно ещё ньюанс.  Вот это мне не нужно${output}.timing  , пишет непонятный лог с непонятными цифирями.
Как бы это осуществить? Заранее спасибо.

Добавлю для не посмотревших статью. Есть простой скрипт ( мне так показалось )

[#Record terminal sessions]
if [ "x$SESSION_RECORD" = "x" ]
then
timestamp=`date "+%m%d%Y%H%M"`
output=/var/log/session/session.$USER.$$.$timestamp
SESSION_RECORD=started
export SESSION_RECORD
script -t -f -q 2>${output}.timing $output
exit
fi

За последующие посты без тегов буду отправлять в бан, последнее предупреждение.

ecc83

Этот скрипт пишет ТОЛЬКО терминальную сессию. Никаие "иксы" он не запишет. Ты много хочешь от пяти строчек кода ;)

symon2014

Вот какой ГУЙ написал эту статью? И как отличить там консоль от терминала. Могучий русский язык против англосаксов. А вот действительно нет вариантов? Вот очень хочется эту простенькую тулзу.

ecc83

Цитата: symon2014 от 25 июля 2017, 19:11:12
И как отличить там консоль от терминала.

Где "там"?
Терминальная сессия не подразумевает графической среды. Всё остальное, личная интерпретация, после прочтения статьи, носителя "могучего" языка :)


Цитата: symon2014 от 25 июля 2017, 19:11:12
А вот действительно нет вариантов? Вот очень хочется эту простенькую тулзу.

Варианты есть всегда. Можно на табуретке на Луну слетать. Необходимо только построить такую табуретку ;)
Относительно твоего желания, "простенькой тулзой" его не удовлетворить.

Лучше поищи что то готовое, если оно конечно существует.

symon2014

ecc83, Оказывается работает это в гуях. Этo утилитка script позволяет, получается как скринкаст терминала даже с таймингом для последуещего воспроизведения  в режиме реального времени. Но только внутри одной сессии, и с ручным вводом комманд. А так хочется автоматизировать сей процесс в виде скрипта для многосессионости. Будем искать с перламутровыми пуговицами.  ;D

ecc83


Testing

ЦитироватьЧего хочу? Просто чтобы вся история писалась в папку с логом.
История чего? Команд? Она и так пишется в ~/.bash_history.
Если хотите посмотреть сообщения самой консоли непосредственно из иксов, то...
$ man xconsole
$ xconsole -notify -verbose -exitOnFail

...или в ~/.console.log, если стартануть иксы с помощью
$ startx > .console.log 2>&1

А есть еще и  https://packages.debian.org/stretch/ttyrec

;)

symon2014

Testing , спасибо за советы. За тему не говорю, но вы хотя бы название прочли.


symon2014

Почти отлично, запись лога включается при открытии терминала и заканчивается при выходе и т.д. Но есть ещё одна неудобная фича. Записывается всё подряд вместе со  служебными символами ( выглядит непривлекательно ), для исправления этого в скрипте есть алиас savelog , который приводит лог в удобочитаемый текстовый файл (чуток подправил ), но и тут собака порылась, алиас нужно запускать вручную перед выходом из сессии. Как бы заставить его выполняться просто при закрытии терминала.  :)

anoobis

А вы не смотрели в сторону мультиплексоров типа tmux или screen? У них такая фича вроде как встроена из коробки, к тому же существует множество скриптов, что делает её чуть удобнее, подробнее не скажу, но они это поддерживают точно.

symon2014

Цитата: anoobis от 25 сентября 2017, 22:19:14tmux или screen
Не то, у меня другая цель, что бы всё происходящее в терминале в течение дня писалось в файл. И желательно без моего непосредственного участия.

anoobis

Ну так tmux и запускается в терминале или tty, а также ведёт свою историю терминальной сессии, а история комманд в баше... ну, ладно.. может быть я неправильно вас понял.

symon2014

В общем по большому счёты задача решена. Скрипт из ссылки  выше в плане логгирования вполне работоспособен, но там есть одно неудобство. Для перевода лога в удобочитаемый вид - алиас savelog приходится выполнять вручную, это решено следующим образом, в файл .bashrc  после добавленной строки smart_script нужно добавить ещё одну - trap 'savelog log' EXIT    ,  эта команда отслеживает сигнал EXIT при закрытии терминала и сначала выполняет алиас savelog а затем закрывает терминал.