簡體   English   中英

如何使用pysphere在遠程機器上執行命令

[英]how to execute commands on remote machine using pysphere

讓我想在遠程機器上執行某些命令的VMware VM,例如shutdown / r或dir / o:d等。 使用模塊pysphere模塊與VM通信。

我嘗試了start_process,但它只是為cmd.exe創建進程,我的代碼用於創建進程是VM_object.start_process('cmd.exe',args = [“shutdown / r”])

當您運行命令cmd.exe時,您需要添加/ c:

cmd.exe /c shutdown /r

正如解釋在這里 ,你需要告訴CMD.EXE來運行你作為一個字符串傳遞的參數。 您的命令只是運行cmd.exe而沒有實際發出您作為參數傳遞的命令。 / c標志指示cmd.exe執行傳遞的參數。

虛擬機中的VM_object.start_process('cmd.exe',args = [“shutdown / r”])此命令將被解釋為

cmd.exe "shutdown /r"

因為start_process使用subprocess.list2cmdline()方法來解析“args”參數。 list2cmdline()為包含空格的任何列表元素添加引號。

那么,接下來,關於cmd參數。 采用

cmd /?

了解您應該在代碼中使用什么。 在我的任務中有2個有趣的參數:

  • cmd.exe / c ...,執行后只關閉cmd窗口
  • cmd.exe / k ...,執行命令后不關閉控制台窗口

/ k有用,例如,當您的python代碼有興趣詢問由popen執行的批處理文件的最后%errorlevel%時。

所以,我認為,您的代碼應如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM