2014-11-23 141 views
0

我正嘗試使用POPEN命令讀寫guest-vm控制檯。讀取(標準輸出)工作正常,但是當我添加標準輸入到POPEN我得到「無法控制TTY運行交互式控制檯」。感謝有關如何克服此錯誤的任何建議。無法在沒有控制的情況下運行交互式控制檯TTY

p = Popen(["virsh", "console", "guest-vm"], 
      shell=False, stdin=PIPE, stdout=PIPE, close_fds=True) 

for line in iter(p.stdout.readline, b''): 
    if line == "SUCCESS": 
     p.stdin.write('\n') 

ERROR: 錯誤:不能沒有控制TTY

+0

你可以使用'pexpect','pty'模塊來提供僞tty。這裏有一個[代碼示例,如何使用pty讀取輸出](http://stackoverflow.com/a/12471855/4279)(你的情況是相似的,但你需要一個'select'循環來交錯讀/寫,參見[how 'pty.spawn()'實現](https://github.com/python/cpython/blob/3f409f756b7b8f75c4543b2c31566bd8b8dbb3dd/Lib/pty.py#L119-L170))。 – jfs 2015-07-23 23:40:01

回答

2

運行交互式控制檯你有沒有嘗試過:

ssh -t <user>@<libvirthost> virsh console <vm_name> 

其中: 用戶 - 在libvirthost libvirthost存在的用戶 - 其中的libvirt VM正在運行

More here

+0

好酷,雖然我不是downvoter。 – 2015-07-22 16:01:39

+0

嗯,我不在乎。我仍然有類似的問題,我遇到了這個問題和其他許多問題,所以我儘管可能會幫助他。無論如何,至少解釋會有幫助(從downvoter) – Lukino 2015-07-22 16:03:15

相關問題