Exibir script sobre SSH?

8

Um amigo, usando uma máquina remota, fez o SSH na minha máquina e executou o seguinte script python:


enquanto (1):

.... imprimir "olá mundo"


(esse script simplesmente imprime 'olá mundo' continuamente).

Agora estou logado na minha máquina. Como posso ver a saída do script que meu amigo estava executando?


se ajudar, posso 'localizar' o script que meu amigo está usando:

me @ 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 apenas


que etapas devo seguir para exibir as mensagens "olá mundo" na minha tela?

user3077
fonte

Respostas:

9

Você geralmente não pode ver a saída do programa de outra pessoa. Veja na coluna onde seu comando grep está sendo executado em tty pts/3e o de seu amigo ?, o que significa que ele está desconectado do terminal.

Você pode ver para onde a saída está indo ls -l /proc/7494/fd/(onde 7494 é o ID do processo do seu amigo) - embora se você não estiver executando como root, provavelmente nem poderá procurar, por motivos de segurança. (Então tente sudo ls -l /proc/7494/fd/.)

Existem coisas horríveis, horríveis e arrogantes que você pode fazer para mudar para onde vai a saída do programa. Mas, em geral, você não pode e não deveria.

Se seu amigo deseja compartilhar a saída com você, a abordagem seria redirecionar a saída do programa para um arquivo e, então, tornar esse arquivo legível por você:

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

(Onde, neste caso, "legível por você" é "legível por todos"; com um pouco mais de trabalho, você pode configurar um grupo compartilhado para que apenas vocês dois possam trocar a saída.)

(E lembre-se de que os buffers python são gerados por padrão - é necessário desativar isso -u.)

mattdm
fonte
4

Se você tiver acesso root na máquina e seu amigo estiver disposto a executar alguns comandos, é possível:

  1. [Root] screendeve ser definido como root :chmod u+s /usr/bin/screen
  2. [Amigo] começa screen, ele pode dar um nome à sessão, facilita: screen -S "shared_session"
  3. [Amigo] ativa o modo multiusuário: Ctrl-a :multiuser on
  4. [Amigo] permite acessar sua sessão na tela: Ctrl-a :acladd you
  5. [Amigo] (opcional) restringe seu acesso a somente leitura: Ctrl-a :aclchg you -w "#"
  6. [Você] anexa à tela de amigos: screen -x friend/shared_session

A raiz setuid é talvez um pouco perigosa ...

abanar
fonte
tem que ser suid?
Xenoterracide
caso contrário, a tela será encerrada com: Must run suid root for multiuser support.
wag
1
O uso da tela também foi sugerido no cruzamento desta pergunta para stackoverflow: stackoverflow.com/questions/4425308/view-script-over-ssh/… Observe que a tela -t funcionará bem sem o conjunto raiz definido.
kasterma
@ Kasterma: Eu sou um pouco cético se o usuário A realmente pode se conectar ao usuário B screensem direitos suid / root, você pode explicar isso mais?
wag
@ wag você está certo; tudo, exceto o passo 6, funciona sem esse é o passo que eu não me incomodei (mas claramente deveria ter) o teste. (que poderia ter sido bom se o passo 4 deu um aviso sobre isso)
kasterma