How to record the terminal on a server?

ttyrec

ttyrec allows you to record your terminal sessions easily. However, they are recorded in a special format (not video), but the resulting files are smaller, and as such easily transferable.

I use playterm.org as a hosting for my ttyrec files. It allows you to view your terminal recordings over a browser (as if it were a video).

Steps

Recording

sudo apt-get install ttyrec
ttyrec
#Type your commands
git init #Example command
exit

A ttyrec session is similar to a screen session, except that it is recorded. After your recording is complete, a file with .tty extension will be present in your directory. You can upload that file to playterm, or pass people a download link.

Playing

To play the file, they'd need to use the ttyplay command. Just use ttyplay file.tty and it should play your terminal.

Editing

Since you are comfortable with adding audio later, I'd recommend copying the ttyrec file to a normal ubuntu desktop, and playing the recording (using ttyplay) while recording it using a screencasting session. You can record your voiceovers at the same time.

References:

  • ttyrec Home Page
  • ttyrec man page

asciinema.org (earlier ascii.io)

asciinema [as-kee-nuh-muh] is a free and open source solution for recording terminal sessions and sharing them on the web.

It is fully open-source platform with aim of being a "go to" place for terminal users wanting to share their hackery. Web based player is an implementation of VT100/VT102 ANSI terminal, supporting most ANSI sequences, all text attributes and 256 colors.

Installation for Ubuntu

sudo apt-add-repository ppa:zanchey/
sudo apt-get 
sudo apt-get install asciinema

It also supports other distros and even BSD/Mac systems. Installation Instructions

Start recording with asciinema rec. If you want to upload recordings from command line, run asciinema upload to upload your recording.

More instructions on the help page (asciinema)


Take a look at recordMyDesktop, also, here's a comparison of screencasting software.

If you don't have any GUI you might want to use this script (it's part of the util-linux-ng package):

user@srv % script logfile
Script started, file is logfile
user@srv % echo test
test
user@srv % exit
Script done, file is logfile

You'll find a recording of this session in logfile.

To track a SSH session in the same fashion you can use tee:

user@srv % ssh host | tee -a sshlog

However, both ways just dump commands and outputs, without any time assignments. So it's not applicable to record videos.

I recommend to use something like VirtualBox or VMware and record the windows with virtual machines inside...