我使用Python庫的paramiko到另一臺服務器上運行,通過ssh的命令。我現在面臨的問題是,SSHClient.exec_command()
調用立即返回,送我stdin
,stdout
,並stderr
並給了我沒有別的辦法,我可以看到說,如果該進程仍在運行與否。我想,我可能會嘗試監測,看是否流返回仍然是開放的,但我找不到任何辦法做到這一點,除了試圖從stdout
或stderr
來讀取或寫入到stdin
並等待接收ValueError
。任何人都可以告訴我,我錯過了應該改變的東西嗎?我如何知道遠程進程正在運行或完成?
1
A
回答
1
由於建議從@fixxxer我發現我需要知道。我的測試代碼現在看起來像這樣:
import paramiko
import time
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('localhost', username='user', password='password')
transport = ssh.get_transport()
channel = transport.open_session()
channel.exec_command('./exec_test.py')
status = channel.recv_exit_status()
這很好用。它阻塞,直到命令完成,然後讓我繼續。
+0
警告字 - 如果命令輸出足夠大以填充管道,則會發生死鎖。 – tdelaney
相關問題
- 1. 如何知道nodejs進程完成?
- 2. 如何知道某個進程是否正在運行?
- 3. 如何知道正在運行的後臺進程是否爲
- 4. 如何知道進程正在docker下運行
- 5. 我需要知道一個進程是否正在運行
- 6. 如何知道正在運行的服務已完成?
- 7. 如果子進程正在運行,那麼父進程將如何完成?
- 8. 如何知道哪個線程正在運行我的方法?
- 9. 如何在運行MPI程序時知道錯誤進程號?
- 10. 我如何知道在後臺運行的AsyncTask已完成?
- 11. 如何知道線程已完成
- 12. TFS 2017我如何知道哪些測試正在運行(在完成之前)?
- 13. 如何知道由我的應用程序的進程運行的exe已完成其工作
- 14. c#通知正在運行的進程
- 15. 如何在不知道何時完成的情況下顯示進程進度
- 16. 如何知道過程是否真正完成了dlclose()庫?
- 17. 我如何知道多線程何時完成(Swift)
- 18. 如何在運行進程不是子進程時等待運行進程在perl中完成?
- 19. 知道線程何時完成
- 20. 等待遠程進程完成.net
- 21. 如何知道特定的進程在python中運行?
- 22. 如何知道在MPI上運行哪個核心進程?
- 23. 我如何知道location.reload()何時完成?
- 24. 如何知道該線程正在目標c中運行?
- 25. 應用程序如何知道它正在Google AppEngine上運行?
- 26. 我如何知道ThreadPoolExecutor中的線程已完成?
- 27. 我將如何知道該線程已完成其任務?
- 28. 我如何知道升壓線程是否完成?
- 29. 我怎麼能知道,如果線程在同一進程中運行?
- 30. 如何知道哪些程序正在服務層或框架中運行
使用通道API? http://paramiko-docs.readthedocs.org/en/latest/api/channel.html – fixxxer
您可能要開始使用面料:http://www.fabfile.org/ –
@ReutSharabani感謝。織物看起來有趣。我會在某個時候檢查一下。現在,我已經設法讓Paramiko開始工作。 – Adrian