使用python在远程Windows计算机上运行命令
这一次,我询问有关在远程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。** 您可以尝试将类似的东西与组合使
**我有一台安装了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的具体信息