2013-08-07 121 views
0

有VMware VM,我想在其上执行一些命令,例如关机/ r或dir/o:d etc ...从远程计算机。使用模块pysphere模块与VM进行通信。如何使用pysphere执行远程计算机上的命令

我试图start_process但它只是创造了cmd.exe的过程我创建过程的代码是VM_object.start_process( 'cmd.exe的',ARGS = [ “执行shutdown/r”])当您运行

回答

1

命令CMD.EXE你需要添加/ C:

cmd.exe /c shutdown /r 

至于解释here,你需要告诉CMD.EXE来运行你作为一个字符串传递的参数。 您的命令只是运行cmd.exe,而没有实际发出您作为参数传递的命令。/c标志指示cmd.exe执行传递的参数。

+0

这将是很好解释什么'/ C'一样。 –

1

VM_object.start_process( '的cmd.exe',ARGS = [ “关机/ R”])在虚拟机 这个命令将被解释为

cmd.exe "shutdown /r" 

因为start_process使用subprocess.list2cmdline()方法解析“args”参数。 list2cmdline()为包含空格的任何列表元素添加引号。

所以接下来介绍一下cmd的参数。使用

cmd /? 

了解你应该在你的代码中使用什么。有一个在我的任务,我2个intresting ARGS:

  • 的cmd.exe/c ...,只是关闭cmd窗口执行
  • 的cmd.exe/K ......,不关闭控制台窗口后,在执行命令后

/k有用,例如,当你的python代码感兴趣询问由popen执行的批处理文件的最后%errorlevel%时。

所以,我认为,你的代码应该是这样的:

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