2014-11-23 147 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

相关问题