Eu preciso conectar na saída do terminal atualmente em execução (tty1) do terminal virtual e capturá-lo (executando o servidor X).
terminal
tty
terminal-emulator
pruzinat
fonte
fonte
screen
outmux
antes de iniciar um comando que você possa acessar de outro terminal .Respostas:
Me deparei com essa ferramenta chamada
ttylog
. É um programa Perl disponível no CPAN aqui . Ele tem algumas ressalvas, uma delas que eu só conseguia descobrir como conectar a um terminal que foi criado como parte de alguém que está entrando na minha caixa. O outro é que você precisa executá-lo com privilégios elevados (ou seja, root ou sudo).Mas funciona!
Por exemplo
Primeiro ssh em sua caixa no TERMO 1:
Observe o tty deste novo terminal:
Agora em outro terminal (TERM # 2), execute este comando:
Agora volte para o TERM # 1 e digite material, ele aparecerá no TERM # 2.
Todos os comandos que tentei (top, sl, etc.) funcionaram sem incidentes
ttylog
.fonte
gdb
foi a primeira opção que me deparei, eu a usei no passado, mas é hacky, pelo menos para mim. Fico feliz que isso ajudou você!De fato é. Os dispositivos / dev / vcs * e / dev / vcsa * correspondem aos dispositivos / dev / tty * (os terminais virtuais). F1 = tty1 = vcs1 / vcsa1 e assim por diante. O vcs / vcsa é como tty para o terminal virtual "atual".
Como root, você pode simplesmente catear esses dispositivos (por exemplo, cat / dev / vcs2) e ver o que está no VT correspondente (por exemplo, / dev / tty2 ou o F2) como tirar uma foto instantânea. vcsa * difere de vcs * por incluir informações sobre as dimensões do terminal (a tela). Lembre-se, é apenas um instantâneo bruto dos personagens, como eles aparecem na tela - coletados a partir da memória alocada no terminal -, portanto, não espere resultados agradáveis e facilmente analisáveis.
A desvantagem é que, se as informações passarem rápido demais, pode ser difícil capturá-las. Talvez tail -f / dev / vcs1 funcione, se você precisar seguir vários screenfulls (ainda não tentei)? Pode ser mais fácil simplesmente redirecioná-lo para um arquivo primeiro. Também pode ser uma boa ideia usar um VT (F1-F6) para examiná-lo, pois os terminais terão as mesmas dimensões. Na minha experiência, é melhor usar os dispositivos vcs * - não os vcsa * -.
Se isso não funcionar, talvez um dos pacotes "big brotherish" que permite que um administrador fique de olho na atividade em um terminal possa funcionar.
PS: Esqueci de perguntar qual sistema operacional você usa. Isso é para Linux, embora dispositivos semelhantes provavelmente existam em outros sistemas operacionais também. Tente pesquisar por "memória do console virtual" entre as páginas de manual dos dispositivos.
fonte
wlan0
, na verdade, tenho uma situação catch-22 tentando depurar onde esse script está falhando. Suponha que eu não possa usar um hub usb ... existe uma maneira de canalizar caracteres para / dev / tty1 de alguma forma?/dev/tty1
como root, mas tudo isso faz é exibir os caracteres para a tela, não inseri-losOlhe para:
por exemplo:
fonte
screen
falhou miseravelmente. Funciona.Use o
tty
comando em cada terminal para identificá-los:Supondo que esses TTYs, para redirecionar o stdout do primeiro para o segundo, execute isso no primeiro terminal:
Para restaurar o comportamento padrão stdout de pts / 0:
Veja este vídeo para uma demonstração.
fonte
Isso funcionou para mim:
Usando um teclado no computador "A" (ou seja, o computador físico a ser controlado), execute:
screen -q
Conecte-se
ssh
do computador "B" ao computador "A".Na sessão ssh, digite:
screen -ls
para obter um ID de sessão ao qual se conectar (4 dígitos na linha que contém tty ).Conecte-se à sessão acima com:
screen -x <session id>
... usando o número de identificação da sessão recebido doscreen -ls
comando acima.Qualquer coisa digitada em qualquer "sessão" acontecerá nas duas "sessões"; portanto, por exemplo, a digitação
screen -d
encerrará AMBAS as sessões.fonte
Outra abordagem é usar o
screen
utilitário gnu na sua máquina local. Chame-o com a-L
opção ou inicie sem essa opção e use a^aH
sequência de comandos. Qualquer uma das abordagens faz com que todas as entradas e saídas sejam registradas em um arquivo chamadoscreenlog.x
onde x é o número da tela.Isso é útil, pois nada mais precisa ser instalado na máquina remota.
fonte
Como não iniciei o tty1 com tela, este script ajudou:
Eu usei a resposta de Baard Kopperud acima. "128" é uma linha do meu tty1. O sono pode ser definido como um número apropriado.
Eu usei isso no terminador e dimensionei a coluna para que o pergaminho seja uma linha de texto.
fonte
Abra dois terminais. Digite
tty
cada um e você obterá o ID como/dev/pts/nº
Então no primeiro você digita
script -f /dev/pts/nºofSecondTerminal
e no segundo você faz o opostoscript -f /dev/pts/nºofFirstTerminal
para que eles fiquem ligadosParabéns! Ambos os terminais emitem e recebem o mesmo material. Precisa de um terço? Bem, você estudou combinações? Você precisará de 6
script -f
comandos. Ainda mais tty? Em breve...fonte