Skip to content

Latest commit

 

History

History
163 lines (113 loc) · 12.1 KB

Как использовать команду «Script» для записи терминальной сессии Linux.md

File metadata and controls

163 lines (113 loc) · 12.1 KB

Как использовать команду «Script» для записи терминальной сессии Linux

Эта команда сценария очень полезна для системного администратора. Если в системе возникает какая-либо проблема, очень трудно найти, какая команда была выполнена ранее. Следовательно, системный администратор знает важность этой команды сценария. Иногда вы находитесь на сервере и думаете, что ваша команда или кто-то из ваших знакомых на самом деле не хватает документации о том, как выполнить конкретную конфигурацию. Вы можете выполнить настройку, записать все действия сеанса оболочки и показать запись человеку, который точно увидит, что у вас было (тот же вывод) в вашей оболочке в момент настройки.

Как работает команда сценария?

Команда script записывает для вас сеанс оболочки, так что вы можете посмотреть на вывод, который вы видели в то время, и вы можете даже записать с синхронизацией, чтобы вы могли воспроизводить в реальном времени. Это действительно полезно и пригодится в самые странные времена и места.

Команда script ведет журнал действий для различных задач. Сценарий записывает все в сеансе, например, что вы печатаете, что видите. Для этого просто введите команду script на терминале и введите exit когда закончите. Все, что находится между командой script и exit, заносится в файл. Это включает в себя сообщения с подтверждением от самого скрипта.

1. Record your terminal session

script makes a typescript of everything printed on your terminal. If the argument file is given, script saves all dialogue in the indicated file in the current directory. If no file name is given, the typescript is saved in default file typescript. To record your shell session so what you are doing in the current shell, just use the command below

$ script shell\record1
Script started, file is shell\record1

Это указывает на то, что файл shell_record1 создан. Давайте проверим файл

$ ls -l shell_*
-rw-r--r-- 1 root root 0 Jun 9 17:50 shell_record1

После завершения вашей задачи вы можете ввести exit или Ctrl-d, чтобы закрыть сеанс скрипта и сохранить файл.

$ exit
exit
Script done, file is shell_record1

Вы можете видеть, что скрипт указывает имя файла.

2. Проверьте содержимое записанного терминального сеанса

Когда вы используете команду сценария, она записывает все в сеансе, например, что вы набираете, и весь ваш вывод. Поскольку выходные данные сохраняются в файл, после проверки его содержимого возможно после существующего записанного сеанса. Вы можете просто использовать команду текстового редактора или средство просмотра команд текстового файла.

$ cat shell_record1 
Script started on Fri 09 Jun 2017 06:23:41 PM UTC
$ date
Fri Jun 9 18:23:46 UTC 2017
$ uname -a
Linux centos-01 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ whoami
root
$ pwd
/root
$ exit
exit


Script done on Fri 09 Jun 2017 06:25:11 PM UTC

При просмотре файла вы понимаете, что скрипт также хранит переводы строки и возвраты. Это также указывает время записи в начало и конец файла.

3. Запись нескольких терминальных сессий

Вы можете записать несколько терминальных сессий, как хотите. Когда вы закончите запись, просто начните другую новую запись сеанса. Это может быть полезно, если вы хотите записать несколько конфигураций, которые вы делаете, чтобы показать их своей команде или студентам, например. Вам просто нужно назвать каждый файл записи.

Например, давайте предположим, что вы должны сделать OpenLDAP, DNS,Machma конфигурации. Вам нужно будет записать каждую конфигурацию. Для этого просто создайте файл записи, соответствующий каждой конфигурации, когда закончите.

$ script openldap_record
   ...............
    configuration step
   ..............
$ exit

Когда вы закончите с первой конфигурацией, начните записывать следующую конфигурацию

$ script machma_record
    ............
     configuration steps
    .............
$ exit

И так далее для других. Обратите внимание, что если вы запишете команду с указанием существующего имени файла, файл будет заменен. Таким образом, вы потеряете все.

Теперь давайте представим, что вы начали настройку Machma, но вам необходимо прервать ее настройку, чтобы завершить настройку DNS из-за непредвиденной ситуации. Теперь вы хотите продолжить настройку Machma, где вы оставили. Это означает, что вы хотите записать следующие шаги в существующий файл machma_record без удаления его предыдущего содержимого; Для этого вы будете использовать команду -a для добавления нового вывода в файл.

Это содержание нашего записанного файла

Теперь, если мы хотим продолжить запись в этом файле, не удаляя уже существующее содержимое, мы сделаем

$ script -a machma_record
Script started, file is machma_record

Теперь продолжите настройку, затем выйдите, когда закончите, и давайте проверим содержимое записанного файла.

Обратите внимание на новое время новой записи, которая появляется. Вы можете видеть, что файл имеет предыдущие и фактические записи.

4. Воспроизвести терминальную сессию Linux

Мы видели, что можно просматривать содержимое записанного файла с помощью команд для отображения содержимого текстового файла. Команда сценария также дает возможность увидеть записанный сеанс в виде видео. Это означает, что вы будете точно проверять, что вы сделали, шаг за шагом в момент ввода команд, как если бы вы смотрели видео. Таким образом, вы будете воспроизводить / воспроизводить записанный сеанс терминала.

Чтобы сделать это, вы должны использовать опцию --timing команды сценария, когда вы начнете запись.

$ script --timing=file_time shell_record1
Script started, file is shell_record1

Смотрите, что файл для записи - это shell_record1. Когда запись закончится, выйдите нормально

$ exit
exit
Script done, file is shell_record1

Давайте посмотрим содержимое file_time

$ cat file_time 
0.807440 49
0.030061 1
116.131648 1
0.226914 1
0.033997 1
0.116936 1
0.104201 1
0.392766 1
0.301079 1
0.112105 2
0.363375 152

Опция --timing выводит данные синхронизации в указанный файл. Эти данные содержат два поля, разделенных пробелом, который указывает, сколько времени прошло с момента предыдущего вывода, сколько символов было выведено на этот раз. Эта информация может быть использована для воспроизведения записей с реалистичными задержками при наборе текста и выводе.

Теперь, чтобы воспроизвести сеанс терминала, мы используем команду scriptreplay вместо команды script с тем же синтаксисом при записи сеанса. Смотри ниже

$ scriptreplay --timing=file_time shell_record1

Вы сделаете так, чтобы записанная сессия воспроизводилась так, как если бы вы смотрели видео, которое записывало все, что вы делали. Вы можете просто вставить файл синхронизации без указания всех параметров --timing=file_time. Смотри ниже

$ scriptreplay file_time shell_record1

Итак, вы понимаете, что первый параметр - это файл синхронизации, а второй - записанный файл.

Заключение

Команда сценария может быть вашим готовым инструментом для документирования вашей работы и показа другим, что вы делали во время сеанса. Его можно использовать для регистрации того, что вы делаете в сеансе оболочки. Когда вы запускаете скрипт, новая оболочка разветвляется. Он читает стандартный ввод и вывод для вашего терминала tty и сохраняет данные в файл.


script