通过 SSH 查看脚本?

通过 SSH 查看脚本?

一位朋友使用远程计算机通过 SSH 连接到我的计算机并运行以下 python 脚本:


而(1):

....打印“你好世界”


(此脚本只是连续打印“hello world”)。

我现在已登录到我的机器。我如何查看我朋友正在运行的脚本的输出?


如果有帮助,我可以“发现”我朋友正在使用的脚本:

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

朋友 7494 12.8 0.3 7260 3300 ? Ss 17:24 0:06 python 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)——尽管如果您不是以 root 身份运行,出于安​​全原因您可能甚至看不到。 (所以尝试一下sudo ls -l /proc/7494/fd/。)

你可能可以做一些可怕的、可怕的、笨拙的事情来改变程序输出的去向。但一般来说,你不能也不应该这样做。

如果您的朋友想与您共享输出,方法是将程序的输出重定向到文件,然后使您可以读取该文件:

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

(在这种情况下,“你可读”是“每个人都可读”;只需多做一点工作,你就可以建立一个共享组,这样只有你们两个可以交换输出。)

(请注意,Python 默认情况下会缓冲输出 - 将其关闭就是它的用途-u。)

答案2

如果您在计算机上具有 root 访问权限并且您的朋友愿意执行一些命令,则可以:

  1. [根]screen必须是setuid 根:chmod u+s /usr/bin/screen
  2. [朋友]启动后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 root 可能有点危险......

相关内容