Se você estiver no unix, o utilitário padrão script
foi projetado para essa finalidade. Se você executar script
sem argumentos, ele iniciará uma cópia do seu shell e registrará a sessão em um arquivo chamado "typescript":
~ jdoe$ script
Script started, output file is typescript
bash-3.2$ date
Fri May 8 16:29:44 EDT 2015
bash-3.2$ exit
exit
Script done, output file is typescript
~ jdoe$ cat typescript
Script started on Fri May 8 16:29:42 2015
bash-3.2$ date
Fri May 8 16:29:44 EDT 2015
bash-3.2$ exit
exit
Script done on Fri May 8 16:29:45 2015
~ jdoe$
Você pode especificar o arquivo para o qual fazer login e o comando para executar em vez do shell. Esta parte não é completamente padronizada. No meu sistema OSX, você executaria assim:
script name-of-log-file command arg...
eg
script ssh-log ssh user@somehost
Com a versão comum do Linux, você executaria assim:
script -c 'command arg...' name-of-log-file
eg
script -c 'ssh user@somehost' ssh-log