J'ai besoin de connecter la sortie du terminal en cours d'exécution (tty1) à partir du terminal virtuel et de la capturer (serveur X en cours d'exécution).
terminal
tty
terminal-emulator
pruzinat
la source
la source
screen
outmux
avant de lancer une commande à laquelle vous voudrez peut-être accéder depuis un autre terminal. .Réponses:
Je suis tombé sur cet outil appelé
ttylog
. C'est un programme Perl disponible sur CPAN ici . Il y a quelques mises en garde, l'une d'entre elles étant que je ne pouvais comprendre que l'attachement à un terminal créé dans le cadre d'une personne ssh'ing dans ma boîte. L'autre étant que vous devez l'exécuter avec des privilèges élevés (c'est-à-dire root ou sudo).Mais ça marche!
Par exemple
Premièrement SSH dans votre boîte en TERM # 1:
Notez le terminal de ce nouveau terminal:
Maintenant, dans un autre terminal (TERM # 2), exécutez cette commande:
Revenons maintenant à TERM n ° 1 et saisissez des éléments, ils apparaîtront dans TERM n ° 2.
Toutes les commandes que j'ai essayées, (top, ls, etc.) ont fonctionné sans incident
ttylog
.la source
gdb
c’était la première option que j’ai trouvée, je l’avais moi-même utilisée par le passé, mais c’est un hacky, du moins pour moi. Heureux que cela vous a aidé!En effet, ça l'est. Les périphériques / dev / vcs * et / dev / vcsa * correspondent aux périphériques / dev / tty * (les terminaux virtuels). F1 = tty1 = vcs1 / vcsa1 et ainsi de suite. Le vcs / vcsa est comme tty pour le terminal virtuel "actuel".
En tant que root, vous pouvez simplement chatter ces périphériques (par exemple, cat / dev / vcs2) et voir ce qui se trouve sur le VT correspondant (par exemple, / dev / tty2 le sur F2) comme si vous preniez un instantané. vcsa * diffère de vcs * en ce sens qu’il inclut des informations sur les dimensions du terminal (l’écran). Remarquez, il ne s'agit que d'un instantané brut des caractères tels qu'ils apparaissent à l'écran - recueillis à partir de la mémoire allouée au terminal - ne vous attendez donc pas à une sortie agréable, facile à analyser.
L'inconvénient est que, si les informations défilent trop rapidement, elles peuvent être difficiles à capturer. Peut-être que tail -f / dev / vcs1 fonctionnera, si vous devez suivre plusieurs écrans (je n'ai pas essayé moi-même)? Il peut être plus simple de le rediriger vers un fichier en premier. Il peut également être judicieux d’utiliser un VT (F1-F6), car les terminaux auront les mêmes dimensions. D'après mon expérience, il est préférable d'utiliser les périphériques vcs *, et non vcsa *.
Si cela ne fonctionne pas, peut-être qu'un des paquets "big brotherish" permettant à un administrateur de surveiller l'activité sur un terminal peut fonctionner.
PS: J'ai oublié de demander quel système d'exploitation vous utilisez. Ceci est pour Linux, bien que des périphériques similaires existent probablement sur d'autres systèmes d'exploitation. Essayez de rechercher "mémoire de console virtuelle" parmi les pages de manuel des périphériques.
la source
wlan0
, j'ai une situation de piège qui tente de déboguer où ce script échoue. Supposons que je ne puisse pas utiliser de hub USB ... est-il possible pour moi de rediffuser des caractères dans / dev / tty1?/dev/tty1
tant que root, mais tout ce que cela fait est d'afficher les caractères à l'écran, pas les entrerRegarder:
par exemple:
la source
screen
échoué lamentablement. Ça marche.Utilisez la
tty
commande dans chaque terminal pour les identifier:En supposant que ces TTY, pour rediriger la sortie standard du premier vers le second, exécutez ceci dans le premier terminal:
Pour restaurer le comportement par défaut de la sortie standard de pts / 0:
Voir cette vidéo pour une démonstration.
la source
Cela a fonctionné pour moi:
En utilisant un clavier sur l’ordinateur "A" (c’est-à-dire l’ordinateur physique à contrôler), exécutez:
screen -q
Connectez-vous
ssh
de l'ordinateur "B" à l'ordinateur "A".Dans la session ssh, tapez:
screen -ls
pour obtenir un identifiant de session auquel vous connecter (4 chiffres sur la ligne contenant tty ).Connectez-vous à la session ci-dessus avec:
screen -x <session id>
... en utilisant le numéro d’identifiant de session reçu de lascreen -ls
commande ci-dessus.Tout ce qui est tapé dans l'une ou l'autre des "sessions" se produira dans les deux "sessions", ainsi, par exemple, la frappe
screen -d
tapera les DEUX sessions.la source
Une autre approche consiste à utiliser l'
screen
utilitaire gnu sur votre ordinateur local. Invoquez-le avec l'-L
option ou démarrez sans cette option et utilisez la^aH
séquence de commandes. Quelle que soit l'approche choisie, toutes les entrées et sorties sont consignées dans un fichier nomméscreenlog.x
où x est le numéro d'écran.C’est pratique car il n’ya rien d’extraordinaire à installer sur la machine distante.
la source
Puisque je n'ai pas commencé tty1 avec screen, ce script m'a aidé:
J'ai utilisé la réponse de Baard Kopperud ci-dessus. "128" est 1 ligne de mon tty1. Le sommeil peut être réglé sur un nombre approprié.
Je l'ai utilisé dans Terminator et dimensionné la colonne de sorte que le défilement est une ligne de texte.
la source
Ouvrez deux terminaux. Tapez
tty
dans chacun et vous obtiendrez son id comme/dev/pts/nº
Ensuite, dans le premier, vous tapez
script -f /dev/pts/nºofSecondTerminal
et dans le second, vous faites le contrairescript -f /dev/pts/nºofFirstTerminal
pour qu'ils soient liésFélicitations! Les deux terminaux émettent et reçoivent les mêmes choses. Besoin d'un tiers? Eh bien, avez-vous étudié les combinaisons? Vous aurez besoin de 6
script -f
commandes. Encore plus tty? Bientôt...la source