这次我问的是在远程Windows机器上运行命令。
让我在这里更具描述性。
**我有一台机器上安装了python,我想运行一些powershell和cmd命令,或者我想将cmd文件发送到远程Windows机器,以便它可以在那里运行,每个输出像错误,stdout我可以得到回到射击机。
就像我想从python远程管理远程机器一样。如果可能的话,我可以使用python同时在多台机器上远程启动命令
请记住,其他系统没有安装任何python。 **
答案 0 :(得分:3)
这是一个雷区,但“正确”的方式(python控制远程win机器没有python)正在使用WMI或WRM库。
有WMI module by Tim Golden(谁是Python-on-Windows世界的权威),WSMAN library from Dell和pywinrm module。选择你的毒药 - 他们都有自己的弱点(必须先在服务器上启用WRM才能使用它,虽然这不需要任何额外的软件,但它都是Windows的存货; WMI适用于DCOM,所以你会必须弄清楚DCOM安全等等。)
答案 1 :(得分:2)
答案 2 :(得分:2)
您可以使用ssh
作为khagler建议。但是我更喜欢在双方都安装Python,因为Python在远程方面给了我更多的控制权。
例如,ssh
只在两台计算机之间提供单个通道。这意味着我必须在远程端折叠stdout
和stderr
以通过网络发送它。使用远程Python服务器,我可以运行更复杂的脚本,我可以准确控制我想要公开的内容(如果允许远程访问可以执行任何命令)并且错误处理更加简单。
或者两者的结合:在远程计算机上安装Python,然后使用ssh
启动Python脚本。然后,您可以使用自定义协议与其进行通信,而不受命令行/ shell接口的限制。您甚至可以使用scp
远程安装新脚本。
答案 3 :(得分:1)
知道这是一个很老的帖子,
我现在能想到的最佳选择是使用PowerShell进行窗口远程管理。
下面是如何使用PowerShell在远程PC中执行命令以及如何在Python中执行命令。
PowerShell启动服务:
Get-Service -ComputerName aaa0001 -Name Tomcat9 | Start-Service
现在,接下来是如何使用Python执行此操作,
import subprocess
subprocess.call(["C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe","Get-Service -ComputerName aaa0001 -Name Tomcat9 | Start-Service"])
此示例显示如何在Windows中启动Tomcat9 Windows服务。 (“aaa0001”只是计算机名称)
答案 4 :(得分:0)
您可以尝试将Pyro4与subprocess.popen
结合使用。
Pyro4是远程方法调用的框架,subprocess.popen
用于创建底层OS进程。