visualizador de arquivos de log em um terminal (UNIX) (replay log log terminal)

7

Eu preciso entrar em vários servidores via ssh, e é uma coisa útil para registrar o terminal (mesmo coisas em menus smitty / AIX e com data / hora correta / exata). Eu já tenho uma solução para isso:

0)
# with root:
apt-get install bsdutils

# with the given user:
mkdir ~/logs

1)
# append this to you're "~/.bashrc" - this must be the last line!!
STARTTIME='date +%F-%Hh-%Mm-%Ss-%N'; script -q -t 2> /home/USERNAMEHERE/logs/$STARTTIME-timing.txt -c 'bash --rcfile /home/USERNAMEHERE/.bashrc-cp' -f /home/USERNAMEHERE/logs/$STARTTIME-log.txt; exit 0

2)
# make sure the 1) is the last line of bashrc, then [this is needed to avoid "fork bomb"..]:
sed -e '$d' /home/USERNAMEHERE/.bashrc > /home/USERNAMEHERE/.bashrc-cp

E isso funciona EXCELENTE!

Agora, a questão é: como reproduzir esses loggings de terminal? Esta é a maneira padrão de fazer isso:

REPLAY:
# rename the filenames to you're needs! - you can only play 1 file at one time..
scriptreplay "/home/USERNAMEHERE/logs/$STARTTIME-timing.txt" "/home/USERNAMEHERE/logs/$STARTTIME-log.txt"

Ok. Funciona. Mas não é suficiente ...: você só pode começar a tocar a gravação. Mas e se você precisar da gravação apenas de um determinado momento, ou você precisa saber quando exatamente um comando foi executado (você pode ver isso nos arquivos de log do terminal + arquivos de tempo que o "script" gera). Ou melhor: você precisa de log terminal para fins educacionais (então você precisa parar o replay da gravação para escrever algo a partir dele, etc.).

Para esses problemas de reprodução, ainda não encontrei e bons programas. Então eu pensei que eu deveria escrever meu próprio programa sobre isso (mas eu tenho apenas uma experiência de script bash).

Eu achei que o melhor seria para essa tarefa usar ncurses (a solução de replay precisa ser usada em vários sistemas operacionais diferentes, como: OpenBSD, Ubuntu, Redhat). - o registro do terminal pode ser uma "ferramenta de auditoria" para rastrear o que os usuários fizeram via SSH.

Estou pensando nisso (esta é uma janela de terminal, ex .: gnome-terminal):

Q:Oqueounix.stackexchangeacha?Poderiaestasoluçãoderepetiçãofeitacomncurses(ouhámelhor->maisportátil/fácilparaumnãoprogramador?)?Vocêpodeforneceralgumasdicas/URLcomofazerisso?(asncursespodemfazerisso?)

p.s.:umexemploparaosarquivosdelogdoterminal(abriumterminal,digitei"echo hi" e fechei o terminal):

[USER@HOST ~/logs] cat -vte 2012-09-14-12h-46m-27s-509330863-log.txt 
Script started on Fri 14 Sep 2012 12:46:27 PM CEST$
^[[0;32m[USER@HOST ~]^[[m echo hi^M$
hi^M$
^[[0;32m[USER@HOST ~]^[[m [USER@HOST ~/logs] 
[USER@HOST ~/logs] 
[USER@HOST ~/logs] cat -vte 2012-09-14-12h-46m-27s-509330863-timing.txt 
0.512822 29$
0.179438 1$
0.925494 1$
0.254477 1$
0.065499 1$
0.075037 1$
0.139497 1$
0.136499 1$
0.039944 35$
[USER@HOST ~/logs] 

ATUALIZAÇÃO: Eu defini uma recompensa por essa questão. :) (ou existem soluções de registro melhores que possam ser reproduzidas bem? - ty!)

    
por gasko peter 19.09.2012 / 21:09

2 respostas

3

AFAIK, não há ferramentas que façam log e visualização igualmente bem.

rootsh e ferramentas semelhantes são adequadas para o registro tradicional. Já que sua pergunta considera a visualização como importante, e você está simplesmente registrando a si mesmo - é nisso que minha resposta se concentra.

TTYRec é um sistema de gravação de tela de terminal. Ele simplesmente age como um pseudo-terminal entre você e o aplicativo ou shell.

Tudo abaixo suporta o formato ttyrec , por isso, em teoria, você deve ser capaz de misturar e combinar.

Gravação de terminal

  • O ttyrec é um gravador de tela (ou seja, logger) que já existe há muito tempo. Ele pode ser facilmente instanciado no login para imitar como você está bifurcando script de .bashrc .
  • O shelr é um projeto relativamente novo que fornece registro, reprodução e compartilhamento. Está escrito em rubi. O web player imita um player de vídeo da web tradicional (pausa, busca para frente / para trás). %código%
  • termrec , escrito em C, ttyrec alternative. Inclui algumas ferramentas interessantes (proxyrec) e auto comprime gravações. Problemas com o tamanho de terminal não-80x24.
  • registrador ascii.io escrito em python. Um site e serviço do tipo shelr, todos de código aberto.

Outros jogadores

Outro software (formato incompatível)

  • O termdebug expande o ttyrec para suportar o registro da entrada também.
por 27.09.2012 / 20:22
0

Outra abordagem seria usar a tela GNU e dizer ao seu shell para informar a tela onde registrar a saída antes de cada comando. Por exemplo, com zsh (depois de ter iniciado uma sessão de tela):

preexec() {
  ((cmd++))
  { 
    date +%F-%T
    print -r -- "$3"
  } > ~/logs/$cmd
  screen -X msgminwait 0
  screen -X log off
  screen -X logfile ~/logs/$cmd
  screen -X log on
  screen -X msgminwait 3
}

Então, em ~ / logs, você tem arquivos numerados com comandos e sua saída.

    
por 27.09.2012 / 22:21