Python 如何使用pysphere在远程计算机上执行命令

Python 如何使用pysphere在远程计算机上执行命令,python,start-process,Python,Start Process,让我想在其上执行一些命令的VMware VM,例如shutdown/r或dir/o:d等。。。从远程机器。使用模块pysphere模块与VM通信 我尝试启动\u进程,但它只是为cmd.exe创建进程。我创建进程的代码是VM\u对象。启动\u进程('cmd.exe',args=[“shutdown/r”])运行命令cmd.exe时,需要添加/c: cmd.exe /c shutdown /r 如前所述,您需要告诉cmd.exe运行作为字符串传递的参数。 您的命令只是运行cmd.exe,而没有实际

让我想在其上执行一些命令的VMware VM,例如shutdown/r或dir/o:d等。。。从远程机器。使用模块pysphere模块与VM通信


我尝试启动\u进程,但它只是为cmd.exe创建进程。我创建进程的代码是VM\u对象。启动\u进程('cmd.exe',args=[“shutdown/r”])

运行命令cmd.exe时,需要添加/c:

cmd.exe /c shutdown /r
如前所述,您需要告诉cmd.exe运行作为字符串传递的参数。 您的命令只是运行cmd.exe,而没有实际发出作为参数传递的命令。/c标志指示cmd.exe执行传递的参数。

VM\u对象。启动\u进程('cmd.exe',args=[“shutdown/r”]) 在虚拟机中,此命令将被解释为

cmd.exe "shutdown /r"
因为start_进程使用subprocess.list2cmdline()方法来解析“args”参数。list2cmdline()为任何包含空格的列表元素添加引号

接下来,关于cmd参数。使用

cmd /?
了解您应该在代码中使用什么。我的任务中有2个有趣的参数:

  • cmd.exe/c,执行后仅关闭cmd窗口
  • cmd.exe/k,执行命令后不关闭控制台窗口的步骤
/例如,当python代码要求批处理文件的最后%errorlevel%由popen执行时,k是有用的

因此,我认为,您的代码应该如下所示:

VM_object.start_process('cmd.exe', args=["/c","shutdown", "/r"])

最好能解释一下
/c
的作用。