通过SSH查看脚本?


8

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


而(1):

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


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

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


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

me @ 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 pts / 3 S + 17:25 0:00 grep --color = auto just


我应该采取什么步骤才能在屏幕上查看“ hello world”消息?


Answers:


9

通常您看不到其他人程序的输出。在那一列中看到您的grep命令在tty上运行pts/3,而您朋友的是?,这意味着它已从终端分离。

您可以看到输出的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。)


4

如果您具有计算机的超级用户访问权限,并且您的朋友愿意执行一些命令,则可能:

  1. [root] screen必须是setuid rootchmod u+s /usr/bin/screen
  2. [朋友]开始screen,他可以给会话起一个名字,使它变得更容易: screen -S "shared_session"
  3. [朋友]启用多用户模式: Ctrl-a :multiuser on
  4. [朋友]使您可以访问他的屏幕会话: Ctrl-a :acladd you
  5. [Friend](可选)将您的访问权限限制为只读: Ctrl-a :aclchg you -w "#"
  6. [您]附加到朋友屏幕: screen -x friend/shared_session

setuid根可能有点危险...


一定是suid吗?
xenoterracide 2010年

如果不是,屏幕将退出并显示以下内容: Must run suid root for multiuser support.
wag 2010年

1
在该问题的交叉点上,也建议使用screen来stackoverflow:stackoverflow.com/questions/4425308/view-script-over-ssh / ... 请注意,在没有设置setuid根的情况下,screen -t可以正常工作。
kasterma 2010年

@kasterma:如果用户A可以在screen没有suid / root权限的情况下实际连接到用户B,我有点怀疑,您能进一步解释一下吗?
wag 2010年

@wag你是对的;步骤6之外的所有内容都可以在没有此功能的情况下进行,而这是我没有打扰(但显然应该进行)测试的步骤。(如果第4步对此发出警告,那可能会很好)
kasterma 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.