Necesito conectarme a la salida del terminal que se está ejecutando actualmente (tty1) desde el terminal virtual y capturarlo (ejecutar el servidor X).
terminal
tty
terminal-emulator
Pruzinat
fuente
fuente
screen
otmux
antes de comenzar un comando al que desee acceder desde otro terminal .Respuestas:
Me encontré con esta herramienta llamada
ttylog
. Es un programa Perl disponible en CPAN aquí . Tiene un par de advertencias, una de ellas es que solo pude descubrir cómo conectarme a una terminal que fue creada como parte de alguien que entra en mi caja. El otro es que debe ejecutarlo con privilegios elevados (es decir, root o sudo).¡Pero funciona!
Por ejemplo
Primero ssh en su caja en el TÉRMINO # 1:
Tenga en cuenta este nuevo terminal tty:
Ahora en otra terminal (TERM # 2) ejecuta este comando:
Ahora regrese al TÉRMINO # 1 y escriba cosas, aparecerá en el TÉRMINO # 2.
Todos los comandos que probé (top, ls, etc.) funcionaron sin incidentes
ttylog
.fuente
gdb
fue la primera opción con la que me encontré, la he usado yo mismo en el pasado, pero al menos para mí es hacky. ¡Me alegra que esto te haya ayudado!De hecho, es. Los dispositivos / dev / vcs * y / dev / vcsa * corresponden a los dispositivos / dev / tty * (los terminales virtuales). F1 = tty1 = vcs1 / vcsa1 y así sucesivamente. El vcs / vcsa es como tty para el terminal virtual "actual".
Como root, puede simplemente conectar estos dispositivos (p. Ej. Cat / dev / vcs2) y ver qué hay en el VT correspondiente (p. Ej. / Dev / tty2 el encendido en F2) como tomar una instantánea. vcsa * difiere de vcs * en que incluyen información sobre las dimensiones del terminal (la pantalla). Eso sí, es solo una instantánea de los personajes tal como se muestran en la pantalla, reunidos de la memoria asignada al terminal, por lo que no esperes una salida agradable y fácil de analizar.
El inconveniente es que si la información pasa demasiado rápido, puede ser difícil capturarla. ¿Quizás tail -f / dev / vcs1 funcionará si necesita seguir varios screenfulls (no lo he probado)? Puede ser más fácil simplemente redirigirlo primero a un archivo. También puede ser una buena idea usar un VT (F1-F6) para verlo, ya que los terminales tendrán las mismas dimensiones. En mi experiencia, es mejor usar los dispositivos vcs *, no vcsa *.
Si eso no funciona, quizás funcione uno de los paquetes de "gran hermandad" que permite que un administrador vigile la actividad en un terminal.
PD: Olvidé preguntar qué sistema operativo usas. Esto es para Linux, aunque probablemente también existan dispositivos similares en otros sistemas operativos. Intente buscar "memoria de consola virtual" entre las páginas de manual para dispositivos.
fuente
wlan0
, en realidad tengo una situación de atrapar 22 tratando de depurar dónde falla este script. Supongamos que no puedo usar un hub usb ... ¿hay alguna forma de canalizar caracteres en / dev / tty1 de alguna manera?/dev/tty1
como root, pero todo esto es mostrar los caracteres en la pantalla, no ingresarlosmirar:
por ejemplo:
fuente
screen
fallado miserablemente. Funciona.Use el
tty
comando en cada terminal para identificarlos:Suponiendo estos TTY, para redirigir el stdout del primero al segundo, ejecute esto en el primer terminal:
Para restaurar el comportamiento predeterminado stdout de pts / 0:
Vea este video para una demostración.
fuente
Esto funcionó para mí:
Usando un teclado en la computadora "A" (es decir, la computadora física que se va a controlar), ejecute:
screen -q
Conéctese
ssh
desde la computadora "B" a la computadora "A".En la sesión ssh, escriba:
screen -ls
para obtener una identificación de sesión para conectarse (4 dígitos en la fila que contiene tty ).Conéctese a la sesión anterior con:
screen -x <session id>
... utilizando el número de identificación de sesión recibido delscreen -ls
comando anterior.Todo lo que se escriba en cualquiera de las "sesiones" ocurrirá en ambas "sesiones", por lo que, por ejemplo, al escribir
screen -d
se cerrarán AMBAS sesiones.fuente
Otro enfoque es utilizar la
screen
utilidad gnu en su máquina local. Invoque con la-L
opción, o comience sin esa opción y use la^aH
secuencia de comandos. Cualquiera de los dos enfoques hace que todas las entradas y salidas se registren en un archivo llamadoscreenlog.x
donde x es el número de pantalla.Esto es útil porque no es necesario instalar nada adicional en la máquina remota.
fuente
Como no comencé tty1 con la pantalla, este script ayudó:
Utilicé la respuesta de Baard Kopperud arriba. "128" es 1 línea de mi tty1. El sueño se puede establecer en un número apropiado.
Usé esto en terminador y dimensioné la columna para que el desplazamiento sea una línea de texto.
fuente
Abrir dos terminales. Escriba
tty
cada uno y obtendrá su identificación como/dev/pts/nº
Luego, en el primero escribes
script -f /dev/pts/nºofSecondTerminal
y en el segundo haces lo contrarioscript -f /dev/pts/nºofFirstTerminal
para que se vinculenFelicidades! Ambas terminales emiten y reciben las mismas cosas. ¿Necesitas un tercero? Bueno, ¿has estudiado combinaciones? Necesitarás 6
script -f
comandos. ¿Aún más tty? Pronto...fuente