Lê a sessão da tela GNU sem anexar a ela

1

Eu uso a tela GNU principalmente para executar comandos que se tornam não interativos após alguma entrada inicial.

Eu não gosto de navegar na saída em sessões de tela, eu sinto que é um pouco bugs.

Existe uma maneira de acessar o histórico de uma sessão de tela sem screen -r ? (Não tenho certeza sobre a terminologia correta aqui, eu simplesmente quero dizer todas as entradas e saídas que ocorreram na tela sessão, não o histórico no sentido dos comandos que foram inseridos no prompt do shell).

Idealmente, eu gostaria de fazer isso com (1) bash / Linux builtins, (2) else com screen propriamente dito, (3) else com um pacote Python, (4) e somente se nenhum deles for possível com um programa externo.

(1: por exemplo, cat /run/screen/S-user/12345.pts-1.pc 2: por exemplo, screen --cat 12345 3: por exemplo, pip install screen; python -c 'import screen;print(screen.read_socket("12345"))' 4: por exemplo, sudo apt install screenreader; screenreader 12345 )

    
por Bananach 25.08.2018 / 16:15

1 resposta

0

expect pode registrar uma transação de sessão e pode ficar desacompanhado após alguma entrada de interação inicial. Isso permitirá que você execute um comando, interaja com ele e digite ~. para entregar as coisas para expect até que o programa saia. Enquanto isso, o out.1535209800 ou o que quer que possa ser inspecionado.

#!/usr/bin/env expect
log_file out.[clock seconds]
spawn -noecho sh  ;# here be the command to run
interact {
  ~. { return }   ;# type this when done interacting
  ~~ { send "~" } ;# or this to get a literal ~ in the shell
}
if {[catch {
  expect {
    eof { exit }
    match_max { exp_continue }
    timeout { exp_continue }
  }
} oops ]} { puts stderr $oops; exit 1 }
    
por 25.08.2018 / 17:10