【发布时间】:2015-01-19 18:23:02
【问题描述】:
我有两台机器,A 和 B。两台机器都可以是 Windows 或 Linux 机器,但是 - 为简单起见 - 我事先知道哪个是哪个。我还知道远程机器B 的用户名和密码(没有其他身份验证方法)。所以我有四种可能的组合:
A=Windows B=Windows
A=Windows B=Linux
A=Linux B=Windows
A=Linux B=Linux
我正在寻找一个小的 python 脚本(或更好的:标准库),它可以在 B 上执行来自 A 的远程命令。准确地说:在机器A 上,我启动了一个python 脚本来在远程机器B 上运行一些命令cmd。在python 中是否有通用的方法来执行此操作?
对于 Linux->Linux 组合,我可以考虑使用 ssh 和 subprocess,但我可能会遇到用户名/密码身份验证问题。
对于 Windows->Windows 组合,我已经使用了一个名为 psservice 的工具(与子进程一起使用)。
知道如何以最 Pythonic 的方式解决这个问题吗?不需要是一个功能,它可以通过四种不同的方式实现。并且,如果可能,不使用第三方库(这有点不一致,因为psservice 已经是我正在使用的第三方库......)。
【问题讨论】:
-
为什么不直接使用
ssh呢?保持简单。 -
是否还有其他有用的建议(实际上可行)并且不包括
paramiko(对我不起作用...)? -
你有没有让 ssh 在 windows 和 linux 之间的命令行下工作?因为那是第 1 步。如果您甚至无法让 ssh 在命令行中工作,那么 paramiko 将无法工作,其他建议对您来说也不会更容易;他们将变得更加困难。例如,您可以使用套接字、snmp、http 在计算机之间进行通信,但所有这些都需要更多的工作。
-
另外,您可以在没有 paramiko 的情况下将 ssh 与 python 一起使用。还有其他库,或者您可以使用 Popen 手动完成:python-for-system-administrators.readthedocs.org/en/latest/…