Exibir script sobre SSH?

8

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

enquanto (1):

.... print "olá mundo"

(este 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 usando?

Se ajudar, posso "identificar" 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 - cor = auto apenas

que passos devo seguir para ver as mensagens "hello world" no meu ecrã?

    
por user3077 13.12.2010 / 03:15

2 respostas

9

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

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

Há coisas terríveis, horríveis e complicadas que você pode fazer para mudar para onde vai a saída do programa. Mas, em geral, você não pode e não deve.

Se o seu amigo quiser compartilhar a saída com você, a abordagem seria redirecionar a saída do programa para um arquivo e torná-lo 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 dois possam trocar a saída.)

(E esteja ciente de que os buffers do Python saem por padrão - desligar isso é para o que o -u serve.)

    
por 13.12.2010 / 03:53
4

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

  1. [Root] screen precisa ser raiz do setuid : chmod u+s /usr/bin/screen
  2. [Amigo] inicia screen , ele pode dar um nome à sessão, facilita: %código%
  3. [Amigo] ativa o modo multiusuário: screen -S "shared_session"
  4. [Amigo] permite que você acesse a sessão de tela dele: Ctrl-a :multiuser on
  5. [Amigo] (Opcional) restringe seu acesso a somente leitura: Ctrl-a :acladd you
  6. [Você] anexa à tela de amigos: Ctrl-a :aclchg you -w "#"

A raiz do setuid é talvez um pouco perigosa ...

    
por 13.12.2010 / 09:39