【问题标题】:run ssh command remotely without redirecting output远程运行 ssh 命令而不重定向输出
【发布时间】:2012-09-12 14:35:22
【问题描述】:

我想在我的服务器上运行一个 python 脚本(那个 python 脚本有 GUI)。但我想从 ssh 开始。像这样的:

  • ssh me@server -i my_key "nohup python script.py" ... > 让脚本永远运行 但它抱怨“无法访问视频驱动程序”,因为它试图使用我的 ssh 终端作为输出。

我能否以某种方式让我的命令输出在服务器机器上运行,而不是在我的终端上运行...基本上类似于“wake-on-lan 功能”-> 告诉服务器你想要一些东西,他将使用它自己的系统来做所有事情(不发回任何输出)

【问题讨论】:

  • 如果您不想将其重写为“无头”脚本,请尝试在 X 中找到某种方式来执行它(X11 转发或其他东西)。

标签: python ssh openssh


【解决方案1】:

怎么样

ssh me@server -i my_key "nohup python script.py >/dev/null 2>&1"

当然,您可以使用重定向到某个远程日志文件而不是 /dev/null。 ? :)

编辑:X 上的 GUI 应用程序通常使用 $DISPLAY 变量来知道它们应该显示在哪里。此外,X11 显示服务器使用授权来允许或禁止应用程序连接到其显示器。命令

export DISPLAY=:0 && xhost +

可能对你有帮助。

【讨论】:

  • 这似乎是正确的方式,但我需要将它重定向到 /dev/tty7 (我的显示器),因为脚本有一个 GUI 输出
  • “GUI 输出”是什么意思?如果是 GUI 应用,需要转发 X11 连接,那另当别论,需要在本地运行 X 服务器(或者像 XQuartz 之类的替代),或者在远程访问远程桌面。
  • 不,不,我不想转发它...它是一个 GUI 应用程序。但我希望它在带有 GUI 的服务器上启动。基本上我只是希望 GUI 根据我来自客户端的 ssh 请求出现在服务器机器上
  • 然后考虑“xhost +”命令(它需要从已经授权的远程机器上的X客户端启动,或者包含在X11配置/启动中):export DISPLAY=:0 && xhost +
  • 好的,我可以使用谷歌,你知道 :P 如果你没有特别的教程,我会使用一般文档 :) 无论如何谢谢
【解决方案2】:

难道你不能宁愿使用python ssh extension而不是调用外部应用程序吗?

它会:

  • 作为一个进程运行
  • 保证调用在所有可能的系统中都是相同的
  • 失去“执行”的开销
  • 通过 ssh 发送所有内容(您不必担心像 "; possibly local executed command 这样的输入)

如果没有,请按照 Piotr Wades 的建议进行。

【讨论】:

    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多