Como obter a saída dentro da 'tela' para um script?

24

Eu tenho uma instância de screen em execução, e eu precisaria executar algum código dentro do screen e obter o resultado para o meu script.

A primeira parte é bem fácil, eu só screen -S session_name -X eval 'stuff "$cmd"5' .
(Eu modifiquei uma linha que encontrei em um script )

A segunda parte, sair da saída, é mais complicada. Como posso obter toda a saída, independentemente do tamanho?

    
por 1ace 04.05.2011 / 14:42

2 respostas

24

Você pode iniciar screen com a opção -L . Isso fará com que a tela crie um arquivo screenlog.n (a parte n é numérica, começando com um zero) no diretório de trabalho atual.

No seu caso, seria algo como: screen -S session_name -L -X eval 'stuff "$cmd"5'

Desde que você se lembre de limpar depois, isso deve corresponder ao que você procura depois.

Para a última linha do log, ele pode ser facilmente obtido com tail -1 screenlog.0 , ou o log inteiro pode ser analisado da maneira que você desejar.

    
por 04.05.2011 / 15:11
17

Mais uma nuance que pode ser útil no futuro: Se você estiver em uma sessão de tela, poderá solicitar interativamente que o arquivo de log seja criado. Pressione ctrl - a H (Control-A seguido de maiúscula H) para solicitar que a tela inicie a descarga de qualquer janela em que você esteja arquivo.

    
por 09.05.2011 / 03:05