SSH를 통해 스크립트를 보시겠습니까?

SSH를 통해 스크립트를 보시겠습니까?

친구가 원격 컴퓨터를 사용하여 내 컴퓨터에 SSH로 접속하고 다음 Python 스크립트를 실행했습니다.


그리고 (1):

...."Hello World" 인쇄


(이 스크립트는 "hello world"를 계속해서 인쇄합니다).

이제 내 컴퓨터에 로그인되었습니다. 내 친구가 실행 중인 스크립트의 출력을 어떻게 볼 수 있나요?


도움이 된다면 내 친구가 사용하고 있는 스크립트를 "발견"할 수 있었습니다.

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

친구 7494 12.8 0.3 7260 3300? SS 17:24 0:06 파이썬 TEST_AREA/justprint.py

친구 7640 0.0 0.0 3320 800 포인트/3 S+ 17:25 0:00 grep --color=auto 그냥


화면에 "hello world" 메시지를 보려면 어떤 조치를 취해야 합니까?

답변1

일반적으로 다른 사람이 만든 프로그램의 출력은 볼 수 없습니다. 해당 열에서 귀하의 grep 명령이 tty 에서 실행되고 있는 pts/3반면 친구의 명령은 tty 에서 실행되고 있음을 확인하세요 ?. 이는 터미널에서 분리되었음을 의미합니다.

출력이 어디로 가는지 볼 수 있습니다 ls -l /proc/7494/fd/(여기서 7494는 친구 프로세스의 프로세스 ID입니다). 루트로 실행하지 않는 경우 보안상의 이유로 이를 볼 수 없을 수도 있습니다. (그래서 한번 시도해 보세요 sudo ls -l /proc/7494/fd/.)

프로그램의 출력이 어디로 가는지 변경하기 위해 끔찍하고, 끔찍하고, 투박한 일을 할 수도 있습니다. 그러나 일반적으로 말하면 이렇게 할 수도 없고 해서는 안 됩니다.

친구가 출력을 당신과 공유하고 싶다면 프로그램의 출력을 파일로 리디렉션한 다음 파일을 읽을 수 있도록 하여 이를 수행하십시오.

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

(이 경우 "자신이 읽을 수 있다"는 것은 "모든 사람이 읽을 수 있다"는 의미입니다. 조금만 더 노력하면 두 사람만이 출력을 교환할 수 있도록 공유 그룹을 설정할 수 있습니다.)

(Python은 기본적으로 출력을 버퍼링합니다. 이를 끄는 것이 목적입니다 -u.)

답변2

귀하의 컴퓨터에 루트 액세스 권한이 있고 귀하의 친구가 일부 명령을 실행할 의향이 있는 경우 다음을 수행할 수 있습니다.

  1. [루트]는 screen다음과 같아야 합니다.setuid 루트:chmod u+s /usr/bin/screen
  2. [Friend]가 시작되면 screen세션 이름을 지정하여 작업을 더 쉽게 할 수 있습니다. screen -S "shared_session"
  3. [친구] 다중 사용자 모드 활성화:Ctrl-a :multiuser on
  4. [친구]는 자신의 스크린 세션에 대한 액세스를 제공합니다.Ctrl-a :acladd you
  5. [친구] (선택 사항) 읽기 전용 액세스를 제한합니다:Ctrl-a :aclchg you -w "#"
  6. [당신] 친구 화면에 첨부:screen -x friend/shared_session

setuid 루트는 약간 위험할 수 있습니다.

관련 정보