【发布时间】: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 可能不同或不存在。