这次我询问远程Windows计算机上的运行命令。 让我在这里更具描述性。
**我有一台机器上安装了python,我想运行一些powershell和cmd命令,或者我想发送一个cmd文件到远程windows机器,以便它可以在那里运行,并且每个输出都像错误,stdout I可以回到烧机。
就像我想从Python远程管理远程机器。如果可能的话,我可以在多台机器上用python同时远程启动命令。
请记住,其他系统没有安装任何python。 **使用python运行远程Windows机器上的命令
回答
您可以尝试使用类似Pyro4与subprocess.popen
的组合。
Pyro4为远程方法调用的框架,subprocess.popen
用于创建底层操作系统进程。
这是我的理解,Windows 10(本月晚些时候发布)将全面支持SSH开箱即用。因此,如果您只能使用Windows 10或更新版本,则可能不需要在其上安装SSH服务器。 (我实际上没有任何运行Windows 10 beta的机器,所以我还没有能够测试这个。) – ArtOfWarfare
微软提供的OpenSSH相当麻烦。最好避免。 @ArtOfWarfare从他们的github页面看来,似乎很多人都有类似的问题。不知道它是否会起作用,但最好的机会是从这里使用一个建议的sshd服务器:https://serverfault.com/questions/8411/what-is-a-good-ssh-server-to-use -on-windows –
@ArtOfWarfare,我还必须在远程Windows机器上执行python脚本。你是如何解决这个问题的? –
您可以使用ssh
此为khagler建议。但我更喜欢在两边都安装Python,因为Python使我在远程端有了更多的控制权。
例如,ssh
只是提供两个计算机之间的单个信道。这意味着我必须在远程端折叠stdout
和stderr
以通过电线发送。使用远程Python服务器,我可以运行更复杂的脚本,我可以准确控制我想要公开的内容(如果允许远程访问任何命令都可以执行),并且错误处理更简单。
或两者的组合:在远程计算机上安装Python,然后用ssh
启动Python脚本。然后,您可以使用自定义协议与其进行通信,而不受命令行/ shell界面的限制。您甚至可以使用scp
远程安装新脚本。
我想知道你在Windows上运行的是什么sshserver?实际上,我尝试着使用两种不同的SSH服务器来做同样的事情:微软提供的'mobasshd'和'openSSH'。对于这两个服务器,即使通过手动ssh登录,我也无法执行python脚本。我发布在'serverfault':https://serverfault.com/questions/901041/how-to-run-a-python-script-remotely-via-ssh-on-a-windows-machine –
想知道你是否可以提供你正在使用的库的具体细节? –
这是一个有点雷区,但“正确”的方式做到这一点(蟒蛇控制远程胜机无蟒蛇)是使用WMI或水资源管理库。
有一个WMI module by Tim Golden(谁是Windows-on-Windows世界的权威),WSMAN library from Dell和pywinrm module。选择你的毒药 - 它们都有自己的弱点(WRM必须在使用之前在服务器上启用,尽管这不需要任何额外的软件,它是全部的Windows; WMI在DCOM上工作,所以你会必须弄清楚DCOM安全等等)。
这听起来像是最好的解决方案。我可以使用这些模块来控制非Windows的Windows服务器,还是依赖只能在Windows上使用的基础机制? – ArtOfWarfare
Tim的WMI模块只是pywin32的一个包装,所以不行,你不能在非windows上使用它。我不知道戴尔的一个(现在看起来被遗弃,顺便说一句)。 WRM本身就是一个基于XML的协议(我认为),所以理论上你可以做很多事情,但实际上它是那些没人想要弄脏的“企业”标准之一。如果你真的想要的话,你可以试着查看流量并重新实现你所需要的功能。 –
WMI是一个禁止使用,仅限于Windows。 WSMAN文档提到它支持Linux ...也许我可以让它在OS X上工作。它支持2.6和更新,并且在2年前更新,所以它在很久以前并没有被放弃。你的'pywinrm模块'链接指向与'来自Dell的WSMAN库'完全相同的地方 - 我认为这是一个错误。我在这里找到了'pywinrm':https://pypi.python.org/pypi/pywinrm/0.0.3。它看起来不错...如果它允许我上传和下载文件,它是完美的。 – ArtOfWarfare
知道这是一个很老的帖子,
我能想到的是现在是使用PowerShell的窗口远程管理的最佳选择。
下面是如何使用PowerShell和如何在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窗口服务。 (“aaa0001”就是计算机名称)
- 1. 在远程机器上运行命令
- 2. Fabric可以在远程Windows机器上运行shell命令吗?
- 3. 使用Java在远程计算机上运行命令行
- 4. 使用批处理文件在Windows机器上运行远程Linux机器上的自定义命令
- 5. 在Python中的远程机器上执行命令
- 6. 如何使用perl在远程计算机上运行命令?
- 7. 如何使用Perl在远程计算机上运行命令?
- 8. 使用ssh在远程计算机上运行命令
- 9. C++:在Windows机器上远程执行命令
- 10. 如何使用telnetlib3在python asyncio上运行远程命令
- 11. PowerShell - 远程运行Windows命令
- 12. 使用SQLPlus在远程Oracle服务器上运行命令行命令
- 13. Rails应用程序在远程计算机上运行命令
- 14. 在远程windows机器上执行命令,并在Python中获取输出
- 15. 使用Maven运行远程命令
- 16. 使用Javascript运行远程命令
- 17. 使用ssh运行远程awk命令
- 18. SSH远程机器和执行命令
- 19. 执行Python命令远程
- 20. 从命令行通过capistrano在远程主机上运行命令
- 21. 从Web应用运行远程服务器上的命令
- 22. 如何在远程服务器上运行命令行程序
- 23. 运行cmd命令到PowerShell上的远程主机
- 24. 使用shell脚本的远程机器上的多个命令
- 25. 运行命令使用远程计算机
- 26. 如何使用pysphere执行远程计算机上的命令
- 27. c#在Windows 2008 64位上运行命令远程
- 28. Fabric/python。使用本地sshkey运行远程命令
- 29. 如何使用python脚本运行远程shell命令
- 30. 在远程机器上运行线程
thanx的快速回复,但据我所知pyro4是所有ABT远程调用的python对象,但我的情况是,Python是一个系统上运行和其他系统是不是有python安装。 – skyemperor