Запись и воспроизведение команд в консоли
Иногда требуется записать все, что вы вводите в терминале, для того чтобы самому запомнить, что и как делали или передать кому-то другому для анализа или обучения, или просто записать терминальную сессию вместо записи видео с захватом экрана. Все привыкли пользоватся скриншотами и записью видео с экрана. Есть даже мануалы, как делать скрины в голой консоли.
Однако существует интересный способ, как делать «видеозапись команд» в консоли без лишних телодвижений (я не говорю обо всяких доставляемых ttyrec, termrec & ipbt). Выполните в терминале, к примеру, следующие команды:
Показать
script -t 2> timing -a ttyoutput pwd cd / pwd cd - pwd exit
После команды exit запись с терминала прервётся и с помощью команды
scriptreplay timing ttyoutput
можно воспроизвести записанные действия и ответы системы. Для выхода можно использовать комбинацию клавиш Ctrl + D в обычном шеле или набрать exit или logout в csh (если переменная ignoreeof не задана — то Ctrl + D тоже сработает).
Для вывода списка вводимых команд без проигрывания всех действий с установленными временными интервалами достаточно ввести команду
awk '/@/' ttyoutput
А чтобы получить полный список вводимых команд и ответы интерпретатора:
awk '/./' ttyoutput
Можно даже интерактивно передавать вводмые команды, например — с помощью ключа
‒f (‒‒flush)
один пользователь вводит команды в терминал
mkfifo ttyoutput2; script -f ttyoutput2
другой — наблюдает за операциями в реальном времени с помощью
cat ttyoutput2
Сетевой обмен между удалёнными машинами можно организовать с помощью утилиты netcat.
P. S. Команды script и scriptreplay входят в пакет util-linux, поставляемый вместе с операционной системой (по крайней мере в Linux, хотя впервые утилита script появилась в системе 3.0BSD), поэтому они доступны сразу после установки системы.
P. P. S. Альтернативы — уже упоминавшиеся termrec, ipbt, ttyrec/ttyplay — имеет сходный функционал, есть утилита ttycast, осуществляющая широковещательную передачу команд терминального сеанса в реальном времени.
Также существуют такие утилиты:
TermRecord@github — пишет в html и воспроизводит в браузере.
pip install TermRecord TermRecord -o /path/to/output_html
asciinema.org — свбодная утилита с открытым исходным кодом для записи сеансовых команд и выкладывания их в сеть.
curl -sL https://asciinema.org/install | sh asciinema rec
showterm.io — похож на asciinema, но оперирует только с текстом.
gem install showterm showterm # or if you have not installed showterm, you can run the standalone bash <(curl record.showterm.io)
monitor — утилита, перехватывающая ввод/вывод терминала и отправляющая на сайт commands.com.
curl commands.io/install-monitor-(ubuntu|macosx|redhat) monitor -u myusername