2008-10-08 6 views
0

Je jure que X était un moyen de commencer à capturer tout le trafic du terminal vers un fichier sur votre hôte. C'était peut-être une extension HummingBird, mais je pensais que c'était standard. Maintenant, je ne peux pas trouver l'astuce. Suis-je halluciné (arrive quand tu deviens vieux), ou est-ce possible?

Je ne parle pas de 'tee'. Je veux être en mesure d'envoyer une séquence de contrôle xterm à stdout, donnant un nom de fichier, et avoir tout montré dans la fenêtre à partir de ce moment sauvegardé dans le fichier (jusqu'à ce que l'annulation du livre est émise).La séquence de contrôle Xterm vers la sortie «T» vers un fichier

Répondre

3

Cette fonction est appelée exploitation forestière et existe dans le code source, mais est désactivé par défaut pour des raisons de sécurité. Voulez-vous vraiment tout le monde avec la possibilité d'écrire des séquences de contrôle sur votre terminal (par exemple, l'auteur de tout fichier que vous pourriez un jour cat) pour pouvoir écrire des données arbitraires dans des fichiers arbitrairement nommés sous votre compte? Par exemple, un attaquant pourrait facilement utiliser cette fonctionnalité pour modifier votre ~/.ssh/authorized_keys afin d'accorder l'accès à l'attaquant, et changer votre ~/.profile pour envoyer une requête ping à l'attaquant avec votre adresse IP.

Cela dit, si vous compilez xterm avec --enable-logging ET vous #define ALLOWLOGFILECHANGES, puis selon le manuel Xterm Control Sequences, vous gagnerez accès aux séquences de contrôle suivantes:

^[[?46h   Start logging 
^[[?46l   Stop logging 
^[]46;filename\007 Change log file to `filename` 

Le nom du fichier journal sera par défaut appelé Xterm.log.hostname.yyyy.mm.dd.hh.mm.ss.XXXXXX.

Il existe également une option pour activer la journalisation via un tuyau, ce qui est également très dangereux si vous autorisez le changement de l'enregistreur via des séquences de contrôle. Cela permettrait également à quiconque d'exécuter son code sur votre système.

+0

Soupçonné cela ... Je ne vais pas compromettre la sécurité de xterm juste pour obtenir ce petit avantage. Je suis allé à un schéma de script à deux niveaux où la journalisation complète du script interne est une option donnée au script externe. Merci! –

+2

Pour construire xterm-314 avec le contrôle de la séquence d'échappement de la journalisation, vous devez configurer '--enable-logging' et éditer le' Makefile' résultant pour définir 'EXTRA_CFLAGS = -DALLOWLOGFILEONOFF'. – garyjohn

0

Je suis un peu confus par la façon dont vous avez posé votre question. D'abord vous mentionnez Xterm puis X puis terminal, recherchez-vous simplement la commande "tee" (man tee)?

+0

Merci pour les commentaires - question édité et amélioré, j'espère. –

1

La question est plutôt vague.

Essayez de regarder:

  1. "ttyrec/ttyplay" pour enregistrer un texte en mode "film" de votre session de terminal
  2. "écran" pour enregistrer un journal sur la sortie standard de votre session entière
  3. « T » pour l'enregistrement d'un stdout/stderr d'une seule commande
+0

"L'écran -L" est proche, mais ne peut pas être démarré/arrêté via des séquences de contrôle. Mais, il peut être aussi proche que je peux obtenir ... –

Questions connexes