Comment obtenir la sortie de `screen` dans un script?


33

J'ai une screeninstance en cours d'exécution, et j'aurais besoin d'exécuter du code à l'intérieur de screen, et d'obtenir le résultat sur mon script.

La première partie est assez simple, je viens screen -S session_name -X eval 'stuff "$cmd"\015'.
(J'ai modifié une ligne que j'ai trouvée dans un script )

La deuxième partie, extraire la sortie, est plus délicate. Comment puis-je obtenir la sortie entière, quelle que soit sa taille?



Merci :) Le deuxième lien a expliqué pourquoi la première commande doit être stuff, ce que j'ai eu du mal à comprendre.
— 1ace

Réponses:


29

Vous pouvez commencer screenavec l' -Loption. Cela entraînera la création d'un fichier par l'écran screenlog.n(la partie n est numérique, commençant par un zéro) dans le répertoire de travail actuel.

Dans votre cas, cela ressemblerait à quelque chose comme: screen -S session_name -L -X eval 'stuff "$cmd"\015'

Tant que vous vous souvenez de nettoyer après, cela devrait correspondre à ce que vous recherchez.

Pour la dernière ligne du journal, il peut facilement être obtenu avec tail -1 screenlog.0, ou le journal entier peut être analysé comme vous le souhaitez.


Une chose cependant: la screencommande que j'ai donnée était juste d'envoyer la commande. Pour démarrer le screen, j'ai utilisé screen -dmS name program;-)
— 1ace

22

Une autre nuance qui peut être utile à l'avenir: si vous êtes dans une session écran, vous pouvez demander de manière interactive la création du fichier journal. Appuyez sur ctrl- a H(Contrôle-A suivi de H majuscule) pour demander à l'écran de commencer à vider la fenêtre dans laquelle vous vous trouvez dans un fichier journal.


5
Je ne sais pas si c'est à cause d'une version plus récente mais mon man screendit, je dois taper CA H, sans le contrôle pour H. Sad seulement, que cela ne capture pas le journal précédent.
— Matmarbon

2
Tu as raison! C'est CA H pour générer un fichier journal. Veuillez noter qu'il s'agit d'un H majuscule (un h minuscule ne produit qu'une copie papier de l'écran actuel).
— rickumali

3
Veuillez mettre à jour la réponse à CA H. Les futurs chercheurs peuvent être trompeurs et manquer la bonne réponse.
— gc5

Quelqu'un connaît-il un moyen d'envoyer la commande via un script? Comme dans le contrôle d'envoi + a puis le H après une fraction de seconde.
— Zach W.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.