【问题标题】:How to execute a remote script using ssh如何使用 ssh 执行远程脚本
【发布时间】:2015-01-30 03:48:49
【问题描述】:

我知道我可以找到这个问题的多个答案,但我对结果有疑问。

我有一台带有脚本的 Windows PC 和一台必须使用 ssh 启动脚本的 Linux PC。

我看到的问题是,由于某种原因,它使用 Linux 环境而不是 Windows 环境来运行脚本。这是预期的吗?如果是,我如何启动远程脚本(从 Linux)并仍然使用 Windows 环境?

Linux:Python 2.7
视窗:Python 3.4
我的例子:
我正在运行:ssh user@host "WINDOWS_PYTHON_PATH Script.py arg1 arg2 arg3",它在复制命令内部失败
我无法运行ssh user@host "Script.py arg1 arg2 arg3",因为它会因为python版本而无法运行脚本。

我在 Windows 中运行命令的方式是使用相同的语法 "Script.py arg1 arg2 arg3" 并且它可以工作。

看起来它正在使用 Linux 环境来运行脚本。无论谁触发它,我都想在 Windows 上运行脚本。我怎样才能做到这一点?

【问题讨论】:

  • 你在windows上安装了ssh 服务器吗?
  • 是的,我在 Windows 上安装了带有 ssh 的 cygwin。如果没有 Windows 上的 ssh 服务器,我将无法运行命令。
  • 好的。从阅读问题来看,这并不明显。如果它在内部失败,那么代码或环境有问题。您可能需要发布代码,如果它实际上正在执行但有错误,那么远程执行脚本可能不是问题。
  • 我无法发布代码。所以: 1. 如果我在 Windows 上运行脚本,它就可以工作。 2. 如果我执行相同的命令但由 Linux 环境中的 ssh 触发,由于 Linux 环境具有的 python 版本,它会失败并出现一些 python 错误。 3. 如果我运行脚本(使用 ssh)但从 Windows 指定 python 可执行文件,我最终会导致脚本崩溃,因为我正在脚本中执行一些“复制”命令。失败的原因是因为Linux env中没有副本。但是该脚本是为 Windows 设计的,所以当脚本从 Linux 环境触发时,我想保留 Win 环境。
  • #2 是不可能的,如果你想一想的话。如果您从 linux 计算机运行 ssh 以连接到 windows 计算机,则 linux 计算机仅充当哑终端。所有的 python 执行都发生在 Windows 计算机上。关键是要弄清楚cygwin命令行环境和ssh服务器环境有什么不同。例如,PYTHONPATH 可能不同或不存在。

标签: python linux bash ssh


【解决方案1】:
scp user@host:/PATH_YOUR_SCRIPT/Script.py Script.py;Script.py arg1 arg2 arg3

【讨论】:

    【解决方案2】:

    我的问题的解决方案是在脚本调用前使用PATH=/cygdrive/c/WINDOWS/system32:/bin cmd /c,例如:ssh user@host "PATH=/cygdrive/c/WINDOWS/system32:/bin cmd /c script"。这将在 Windows 环境中运行脚本。

    就我而言,问题是脚本在 cygwin 环境下运行,而我想在 Windows 环境下运行。

    【讨论】:

      猜你喜欢
      • 2012-02-05
      • 2017-08-02
      • 2011-05-09
      • 2014-01-20
      • 2020-01-06
      • 2013-10-14
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      相关资源
      最近更新 更多