Converter log de tela para html

3

Eu gostaria de registrar as ações feitas em uma janela de terminal e converter o log em html imediatamente.

Já experimentei os comandos script / screen + ansi2html , mas o resultado não é perfeito: as sequências de escape para edição de linha não é tratado corretamente, então no html resultante eu tenho uma mistura para a versão antiga e a nova da linha. Então, se a saída do terminal é como

$> echo Original text
Original text
$> echo Other
Other

O HTML resultante é

 $> echo Original text
 Original text
 $> echo Othernal text
 Other

Alguma ideia, como resolver o problema?

    
por Attila Szlovencsák 22.09.2013 / 00:06

1 resposta

0

O problema não é seu script Perl (que deve ser desnecessário), mas ansi2html , que está incompleto.

O arquivo de log mostra que algo imprimiu algum texto e, em seguida,

  • adicionou repetidamente a seqüência de escape para limpar o restante da linha \E[K
  • adicionando alternadamente um backspace.

Em ansi2html , o script localiza as seqüências de escape e, em seguida, ignora todas, exceto algumas das que encontra, ou seja,

self.ansi_codes_prog = re.compile('3\\[' '(\[\d;\]*)' '(\[a-zA-z\])')

if command not in 'mMA':

Livrar-se das coisas repetidas é mais simples em um loop. Aqui está um script alternativo que funciona em torno dos problemas vistos em ansi2html para o seu exemplo:

#!/usr/bin/perl -w

while (<>) {
    my $save = "";
    while ( $save ne $_ ) {
        $save = $_;
        s/[^0]0\e\[K//;
    }
    $save = "";
    while ( $save ne $_ ) {
        $save = $_;
        s/[^0]0//;
    }
    s/\e\[\?[;0-9]*[0-6]//g;
    s/\e\][^\a]*\a//g;
    print;
}

e (chamando isso de filterit ), use assim:

./filterit < 1.log | ansi2html >1.html
    
por 27.08.2016 / 01:26