Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python在远程Windows计算机上运行命令_Python_Windows_Remote Debugging_Configuration Management - Fatal编程技术网

使用python在远程Windows计算机上运行命令

使用python在远程Windows计算机上运行命令,python,windows,remote-debugging,configuration-management,Python,Windows,Remote Debugging,Configuration Management,这一次,我询问有关在远程Windows计算机上运行命令的问题。 让我在这里更详细地描述一下。 **我有一台安装了python的机器,我想运行一些powershell和cmd命令,或者我想向远程windows机器发送一个cmd文件,这样它就可以在那里运行,并且每个输出(如错误、stdout)都可以返回到启动机。 就像我想从python远程管理远程机器一样。如果可能,我可以使用python在多台机器上同时远程启动命令。 请记住,其他系统上没有安装任何python。** 您可以尝试将类似的东西与组合使

这一次,我询问有关在远程Windows计算机上运行命令的问题。 让我在这里更详细地描述一下。
**我有一台安装了python的机器,我想运行一些powershell和cmd命令,或者我想向远程windows机器发送一个cmd文件,这样它就可以在那里运行,并且每个输出(如错误、stdout)都可以返回到启动机。
就像我想从python远程管理远程机器一样。如果可能,我可以使用python在多台机器上同时远程启动命令。

请记住,其他系统上没有安装任何python。**

您可以尝试将类似的东西与组合使用


Pyro4是一个用于远程方法调用的框架,并且
子流程。popen
用于创建底层操作系统流程。

您可以在Windows计算机上安装ssh服务器(我听说很好),然后使用模块与之通信。

您可以按照建议使用
ssh
。但我更喜欢在两侧安装Python,因为Python在远程端给了我更多的控制

例如,
ssh
只在两台计算机之间提供一个通道。这意味着我必须在远端折叠
stdout
stderr
,才能通过电线发送。使用远程Python服务器,我可以运行更复杂的脚本,我可以精确地控制要公开的内容(如果允许远程访问,则可以执行任何命令),并且错误处理要简单得多


或者两者的结合:在远程计算机上安装Python,然后使用
ssh
启动Python脚本。然后,您可以使用自定义协议与它通信,而不受命令行/shell界面的限制。您甚至可以使用
scp
远程安装新脚本。

这有点像雷区,但实现这一点的“正确”方法(python在不使用python的情况下控制远程win机器)是使用WMI或WRM库


有一个(Windows世界上Python的权威)、一个和一个。选择你的毒药——它们都有自己的弱点(在使用之前,必须在服务器上启用WRM,尽管这不需要任何额外的软件,但它都是库存窗口;WMI在DCOM上工作,所以你必须了解DCOM的安全性等)。

知道这是一篇很老的文章

目前我能想到的最佳选择是使用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”只是计算机名)

thanx,用于快速回复,但据我所知,pyro4都是abt远程调用python对象,但我的场景是python在一个系统上运行,而另一个系统没有安装python。这听起来是最好的解决方案。我是否可以使用这些模块从非Windows控制Windows服务器,或者它们是否依赖于仅在Windows上可用的底层机制?Tim提供的WMI模块只是pywin32上的包装器,因此不,您不能在非Windows上使用它。我不知道戴尔一号(顺便说一句,它现在看起来被遗弃了)。WRM本身是一个基于XML的协议(我认为),所以理论上你可以做很多事情,但实际上它是没有人真正想弄脏的“企业”标准之一。如果你真的愿意,你可以尝试查看流量,只重新实现你需要的功能。WMI是一个不可使用的工具,仅限Windows。WSMAN文档提到它支持Linux。。。也许我也能让它在OSX上工作。它支持2.6及更新版本,上一次更新是在2年前,所以它并没有在很久以前被放弃。您的
pywinrm模块
链接指向与Dell的
WSMAN库完全相同的位置
-我认为这是一个错误。我在这里找到了
pywinrm
。看起来不错。。。如果它允许我上传和下载文件,那就太完美了
pywinrm
似乎没有任何上传和下载的方式,但WinRM有。因此,也许我可以自己添加
pywinrm
pywinrm的功能……pywinrm可能没有下载和上传的方式,但您可以在与pysmb的组合中使用pywinrm来精确管理这一点。但是,由于您必须启用文件共享,因此需要在远程主机方面多做一些工作。据我所知,Windows 10(将于本月晚些时候发布)将完全支持SSH开箱即用。因此,如果您能负担得起仅在Windows 10及更高版本上使用SSH服务器,那么您可能不需要在其上安装SSH服务器。(我实际上没有任何机器运行Windows10beta,所以我还没有能够测试它。)微软提供的OpenSSH有很多缺陷。最好避免@从他们的github页面下载ArtOfWarfare。。似乎很多人都有类似的问题。不确定它是否会工作,但最好的机会是从这里使用一个建议的sshd服务器:@ArtOfWarfare,我还必须在远程windows机器上执行python脚本。你是如何解决这个问题的?@alpha989-我最终用cygwin在上面安装了sshd。如果那不是你想听的,很抱歉。我之前提到的Windows 10。。。我玩过这个,但我们的大多数服务器仍然运行Server 2008,而Server 2016当时还没有推出。我想知道您在Windows上运行的是什么sshserver?实际上,我尝试了与您使用两个不同的SSH服务器相同的操作:
mobasshd
和来自Microsoft的
openSSH
。对于这两个服务器,即使我手动通过ssh登录,也无法执行python脚本。我在
serverfault
:中发布了这篇文章,想知道您是否可以提供librar的具体信息