Visualizza script su SSH?


8

Un amico, usando una macchina remota, ha SSHed sulla mia macchina ed ha eseguito il seguente script python:


mentre (1):

.... stampa "ciao mondo"


(questa sceneggiatura stampa semplicemente "ciao mondo" continuamente).

Ora ho effettuato l'accesso al mio computer. Come posso vedere l'output dello script in esecuzione sul mio amico?


se aiuta, posso 'individuare' lo script che il mio amico sta usando:

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

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

amico 7640 0,0 0,0 3320 800 pts / 3 S + 17:25 0:00 grep --color = auto just


quali passi devo prendere per visualizzare i messaggi "ciao mondo" sul mio schermo?


Risposte:


9

In genere non è possibile visualizzare l'output del programma di un'altra persona. Guarda in quella colonna dove il tuo comando grep è in esecuzione su tty pts/3e quello del tuo amico ?, il che significa che è staccato dal terminale.

Potresti vedere dove sta andando l'output ls -l /proc/7494/fd/(dove 7494 è l'ID del processo del tuo amico) - anche se se non stai eseguendo come root, probabilmente non puoi nemmeno guardare, per motivi di sicurezza. (Quindi prova sudo ls -l /proc/7494/fd/.)

Ci sono cose orribili, orribili, ingenue che potresti essere in grado di fare per cambiare la destinazione del programma. Ma in generale, non puoi e non dovresti.

Se il tuo amico vuole condividere l'output con te, e l'approccio sarebbe di reindirizzare l'output del programma su un file, e quindi rendere quel file leggibile da te:

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

(Laddove in questo caso "leggibile da te" è "leggibile da tutti", con un po 'più di lavoro puoi impostare un gruppo condiviso in modo che solo voi due possiate scambiare output.)

(Ed essere consapevoli del fatto che i buffer di Python vengono emessi per impostazione predefinita: disattivarlo è ciò che -userve.)


4

Se hai accesso root sulla macchina e il tuo amico è disposto a eseguire alcuni comandi, è possibile:

  1. [Root] screendeve essere setuid root :chmod u+s /usr/bin/screen
  2. [Amico] inizia screen, può dare un nome alla sessione, rende più semplice: screen -S "shared_session"
  3. [Amico] abilita la modalità multiutente: Ctrl-a :multiuser on
  4. [Amico] ti consente di accedere alla sua sessione schermo: Ctrl-a :acladd you
  5. [Amico] (facoltativo) limita l'accesso alla sola lettura: Ctrl-a :aclchg you -w "#"
  6. [Tu] allego sullo schermo degli amici: screen -x friend/shared_session

La radice setuid è forse un po 'pericolosa ...


deve essere suid?
xenoterracide,

in caso contrario, lo schermo uscirà con: Must run suid root for multiuser support.
wag

1
L'uso dello schermo è stato anche suggerito nel punto di intersezione di questa domanda per stackoverflow: stackoverflow.com/questions/4425308/view-script-over-ssh/… Nota che screen -t funzionerà bene senza set di root setuid.
Kasterma,

@kasterma: sono un po 'scettico se l'utente A può effettivamente collegarsi all'utente B screensenza diritti di suid / root, puoi spiegarlo ulteriormente?
wag

@wag hai ragione; tutto tranne il passaggio 6 funziona senza, e questo è il passaggio che non ho disturbato (ma chiaramente avrei dovuto) testare. (potrebbe essere stato carino se il passaggio 4 avesse dato un avvertimento a riguardo)
kasterma,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.