Каков наилучший метод записи сеанса оболочки BASH в файл на хост-машине?
Предпочтительный выходной формат будет эквивалентен настройке журнала PuTTY «вывод для печати», если смотреть пользователю, включая ввод и исключая данные управляющих символов ncurses.
TTYrec - наверное, самое простое решение. Вы можете использовать оригинал:
http://0xcc.net/ttyrec/index.html.en
Или сверните свой:
http://en.wikipedia.org/wiki/Ttyrec
Или вы могли бы получить всю старую школу и | все ваши команды в tee command.timestamp.tee
Вы могли бы начать gnu экран и используйте функцию журнала. Я не знаю ничего, что могло бы дать вам действительно хороший журнал для ncurses такие приложения как топ.
человек экран
log [on|off]
Start/stop writing output of the current window to a file "screenlog.n"
in the window's default directory, where n is the number of the current
window. This filename can be changed with the `logfile' command. ...
logfile filename
logfile flush secs
Defines the name the log files will get. The default is "screenlog.%n".
The second form changes the number of seconds screen will wait before
flushing the logfile buffer to the file-system. The default value is 10
seconds.
В script
программа будет вести полный журнал сеанса вашей оболочки. Не знаю, эквивалентен ли это какой-либо вещи PuTTY.
Я не совсем уверен, чего вы здесь пытаетесь достичь. Это для обучения или для криминалистики? Если вам нужно что-то, что создает хорошо читаемые файлы журнала, вам, вероятно, не повезло. Если вы хотите иметь возможность воспроизводить сеансы, ttyrec - это то, что вам нужно. Вы можете запустить его как часть сценария входа в систему для захвата сеанса пользователя, но убедитесь, что вы используете «ловушку», чтобы помешать пользователю выйти из ttyrec и вернуться в оболочку.
Все введенные команды записываются в файл .bash_history, как правило, у вас дома. Вы можете установить количество сохраняемых строк с помощью параметра HISTFILESIZE.
Однако здесь нет временных меток и вывода.
Если это действительно необходимо, я бы сделал оболочку вокруг bash, скопировал stdin и stdout в файл и работал над этим.
Вы можете попробовать использовать http://xgu.ru/wiki/LiLaLo Он сделан в России, поэтому документация тоже на русском, но Google Translate вам поможет. Вот пример вывода:
(источник: xgu.ru)