Ver secuencia de comandos sobre SSH?

8

Un amigo, usando una máquina remota, SSHed a mi máquina y ejecutó el siguiente script de Python:


mientras que (1):

.... imprimir "hola mundo"


(este script simplemente imprime 'hello world' continuamente).

Ahora estoy conectado a mi máquina. ¿Cómo puedo ver el resultado del script que estaba ejecutando mi amigo?


si ayuda, puedo 'detectar' el script que mi amigo está usando:

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

amigo 7494 12.8 0.3 7260 3300? Ss 17:24 0:06 python TEST_AREA / justprint.py

amigo 7640 0.0 0.0 3320 800 pts / 3 S + 17:25 0:00 grep --color = auto solo


¿Qué pasos debo seguir para ver los mensajes de "Hola mundo" en mi pantalla?

usuario3077
fuente

Respuestas:

9

Por lo general, no puede ver la salida del programa de otra persona. Vea en esa columna dónde se ejecuta su comando grep en tty pts/3, y el de su amigo ?, lo que significa que está desconectado de la terminal.

Podrías ver hacia dónde va la salida ls -l /proc/7494/fd/(donde 7494 es el ID del proceso del proceso de tu amigo), aunque si no estás ejecutando como root, probablemente no puedas mirar, por razones de seguridad. (Así que inténtalo sudo ls -l /proc/7494/fd/)

Hay cosas horribles, horribles y groseras que podrías hacer para cambiar el destino del programa. Pero en general, no puedes y no debes.

Si su amigo quiere compartir la salida con usted, y el enfoque sería redirigir la salida del programa a un archivo, y luego hacer que usted pueda leer ese archivo:

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

(Donde en este caso "legible por usted" es "legible por todos"; con un poco más de trabajo puede configurar un grupo compartido para que solo ustedes dos puedan intercambiar resultados).

(Y tenga en cuenta que python amortigua la salida de forma predeterminada; desactivar eso -ues para qué sirve).

mattdm
fuente
4

Si tiene acceso de root en la máquina y su amigo está dispuesto a ejecutar algunos comandos, es posible:

  1. [Root] screentiene que ser setuid root :chmod u+s /usr/bin/screen
  2. [Amigo] comienza screen, puede darle un nombre a la sesión, lo hace más fácil: screen -S "shared_session"
  3. [Amigo] habilita el modo multiusuario: Ctrl-a :multiuser on
  4. [Amigo] le permite acceder a su sesión de pantalla: Ctrl-a :acladd you
  5. [Amigo] (Opcional) restringe su acceso a solo lectura: Ctrl-a :aclchg you -w "#"
  6. [Usted] adjunta en la pantalla de amigos: screen -x friend/shared_session

La raíz de setuid es quizás un poco peligrosa ...

meneo
fuente
tiene que ser suid?
xenoterracide
si no, la pantalla saldrá con: Must run suid root for multiuser support.
wag
1
El uso de la pantalla también se sugirió en el punto cruzado de esta pregunta para stackoverflow: stackoverflow.com/questions/4425308/view-script-over-ssh/… Tenga en cuenta que screen -t funcionará bien sin un conjunto raíz setuid.
kasterma
@kasterma: Soy un poco escéptico si el usuario A puede realmente adjuntarse al usuario B screensin derechos de suid / root, ¿puede explicarlo más?
meneo
@wag tienes razón; todo menos el paso 6 funciona sin, y ese es el paso que no me molesté (pero claramente debería tener) las pruebas. (podría haber sido agradable si el paso 4 daba una advertencia sobre esto)
kasterma