Browse By

Dica: Linux – script tool

Hoje vou deixar uma dica de uma ferramenta útil no linux para se “gravar” toda a atividade que é feita em seu terminal. Você pode utiliza-la para gravar um histórico mais completo das sessões SSH. Vai além do que o comando history do linux pode proporcionar,  pois o script tool além de gravar as execuções dos comandos como é feito pelo history, ele grava o que é feito dentro de cada call ex: Grava a chamada do comando sqlplus e tudo que é feito dentro dele (query’s,dml’s,ddl’s e etc), tudo tudo tudo. (Deve-se atentar ao tamanho dos logs gerados. Quanto maior a atividade, mais informações gravadas no log).

Como informado acima, esse “utilitário” não grava somente os comandos que são executados na sessão SSH, mas grava realmente tudo que ocorre no terminal. Ela possui algumas opções nas quais são mencionadas abaixo mas creio que a principais seriam:

  • Gravar toda a atividade realizada em arquivo texto após X bytes. (Default)
  • Gravar toda a atividade realizada em arquivo texto em tempo real.

Opcões:

NAME
     script - make typescript of terminal session

SYNOPSIS
     script [-a] [-c COMMAND] [-f] [-q] [-t] [file]

DESCRIPTION
     Script makes a typescript of everything printed on your terminal.  It is useful for students who need a hardcopy record of an interactive session as proof of an assignment, as the typescript file can be
     printed out later with lpr(1).

     If the argument file is given, script saves all dialogue in file.  If no file name is given, the typescript is saved in the file typescript.

     Options:

     -a      Append the output to file or typescript, retaining the prior contents.

     -c COMMAND
             Run the COMMAND rather than an interactive shell.  This makes it easy for a script to capture the output of a program that behaves differently when its stdout is not a tty.

     -f      Flush output after each write. This is nice for telecooperation: One person does ‘mkfifo foo; script -f foo’ and another can supervise real-time what is being done using ‘cat foo’.

     -q      Be quiet.

     -t      Output timing data to standard error. This data contains two fields, separated by a space. The first field indicates how much time elapsed since the previous output. The second field indicates how
             many characters were output this time. This information can be used to replay typescripts with realistic typing and output delays.

     The script ends when the forked shell exits (a control-D to exit the Bourne shell (sh(1)), and exit, logout or control-d (if ignoreeof is not set) for the C-shell, csh(1)).

     Certain interactive commands, such as vi(1), create garbage in the typescript file.  Script works best with commands that do not manipulate the screen, the results are meant to emulate a hardcopy terminal.

 

Segue um exemplo:

Pode ser definido dentro do arquivo das variáveis de ambiente do S.O (bash_profile , .profile,  .bashrc e etc) para que seja ativado automaticamente dentro de cada sessão SSH ou ativado a qualquer momento via execução do utilitário. Segue exemplo utilizado dentro do .bash_profile:

script log_SSH_Term-`who i am | awk '{print $1}'`-`date +%d-%m-%y-%H%M`hs.log

O comando acima criará um arquivo como por exemplo:  log_SSH_Term-oracle-05-11-14-0839hs.log e tudo que minha sessão executar, será descarregado nesse arquivo após X bytes.

Caso você precise que os comandos sejam escritos no arquivo de log em tempo real (após a execução de cada comando) por motivos de acompanhamento do que é feito nessa sessão por outras pessoas, especifique a opção -f ,  ex:

script -f log_SSH_Term-`who i am | awk '{print $1}'`-`date +%d-%m-%y-%H%M`hs.log

Dessa forma só é necessário abrir outra sessão e monitorar o arquivo criado com o tail -f por exemplo.

Por hoje é só.

Forte abraço

Leave a Reply

Your email address will not be published. Required fields are marked *