Afficher le script sur SSH?

8

Un ami, utilisant une machine distante, s'est connecté sur ma machine et a exécuté le script python suivant:


tandis que (1):

.... imprimer "bonjour le monde"


(ce script imprime simplement «bonjour le monde» en continu).

Je suis maintenant connecté à ma machine. Comment puis-je voir la sortie du script que mon ami exécutait?


si cela aide, je peux «repérer» le script que mon ami utilise:

me @ home: ~ $ ps aux | grep justprint.py

ami 7494 12,8 0,3 7260 3300? SS 17:24 0:06 python TEST_AREA / justprint.py

ami 7640 0,0 0,0 3320800 pts / 3 S + 17:25 0:00 grep --color = auto juste


quelles mesures dois-je prendre pour afficher les messages "bonjour le monde" sur mon écran?

user3077
la source

Réponses:

9

Vous ne pouvez généralement pas voir la sortie du programme d'une autre personne. Voir dans cette colonne où votre commande grep s'exécute sur tty pts/3et celle de votre ami ?, ce qui signifie qu'elle est détachée du terminal.

Vous pouvez voir où va la sortie ls -l /proc/7494/fd/(où 7494 est l'ID de processus du processus de votre ami) - bien que si vous ne vous exécutez pas en tant que root, vous ne pouvez probablement même pas regarder, pour des raisons de sécurité. (Alors essayez sudo ls -l /proc/7494/fd/.)

Il y a des choses horribles, horribles et louches que vous pourriez faire pour changer où va la sortie du programme. Mais en général, vous ne pouvez pas et ne devriez pas.

Si votre ami veut partager la sortie avec vous, et l'approche serait de rediriger la sortie du programme vers un fichier, puis de rendre ce fichier lisible par vous:

$ python -u TEST_AREA/justprint.py > /tmp/justprint.out &
$ chmod a+r /tmp/justprint.out

(Où dans ce cas, "lisible par vous" est "lisible par tout le monde"; avec un peu plus de travail, vous pouvez créer un groupe partagé afin que vous puissiez échanger la sortie uniquement.)

(Et sachez que les tampons python sortent par défaut - désactiver cela est à quoi cela -usert.)

mattdm
la source
4

Si vous avez un accès root sur la machine et que votre ami souhaite exécuter certaines commandes, il est possible:

  1. [Root] screendoit être setuid root :chmod u+s /usr/bin/screen
  2. [Ami] commence screen, il peut donner un nom à la session, ça facilite: screen -S "shared_session"
  3. [Friend] active le mode multi-utilisateur: Ctrl-a :multiuser on
  4. [Friend] vous permet d'accéder à sa session écran: Ctrl-a :acladd you
  5. [Friend] (Facultatif) restreint votre accès en lecture seule: Ctrl-a :aclchg you -w "#"
  6. [Vous] attachez sur l'écran d'amis: screen -x friend/shared_session

La racine setuid est peut-être un peu dangereuse ...

remuer
la source
faut-il que ce soit suid?
xenoterracide
sinon, l'écran se fermera avec: Must run suid root for multiuser support.
wag
1
L'utilisation de screen a également été suggérée à l'intersection de cette question pour stackoverflow: stackoverflow.com/questions/4425308/view-script-over-ssh/… Notez que screen -t fonctionnera bien sans jeu de racines setuid.
kasterma
@kasterma: Je suis un peu sceptique si l'utilisateur A peut réellement se connecter aux utilisateurs B screensans droits suid / root, pouvez-vous expliquer cela plus en détail?
wag
@wag vous avez raison; tout sauf l'étape 6 fonctionne sans, et c'est l'étape que je n'ai pas pris la peine (mais que je devrais clairement avoir) de tester. (cela aurait été bien si l'étape 4 donnait un avertissement à ce sujet)
kasterma