我正在编写一个简单的脚本来自动执行一个重复的任务:启动一个虚拟机,找到它的spice tcp端口,并启动remoteviewer与虚拟机交互。顺序为:
virsh -c qemu:///system start test_machine
virsh -c qemu:///system domdisplay test_machine
其输出如下:spice://127.0.0.1:5903号。第三个命令是:
^{pr2}$python 7.5.2在RHEI中有:
#!/usr/bin/python
import subprocess
import pipes
machine_name = 'test_machine'
return_code = subprocess.check_output(['virsh', '-c', 'qemu:///system', 'start', machine_name])
return_code = subprocess.check_output(['virsh', '-c', 'qemu:///system', 'domdisplay', machine_name])
print str(return_code)
esc_return_code = pipes.quote(return_code)
print "remote-viewer {}".format(return_code)
#proc = subprocess.check_output(["remote-viewer {}".format(esc_return_code)]) #, return_code])
我的前两个命令按预期工作——这是带有远程查看器的第三个命令抛出错误。在
我尝试了一些不同的方法,以为是特殊字符引起了问题,但现在我看到前两个命令工作正常,我不相信。我还尝试了与前两个命令相同的格式,如下所示:
subprocess.check_output(['remote-viewer', return_code])
按原样运行脚本将得到以下输出:
spice://127.0.0.1:5903
remote-viewer spice://127.0.0.1:5903
Traceback (most recent call last):
File "/mnt/data/Scripts/runvm.py", line 13, in <module>
proc = subprocess.check_output(["remote-viewer {}".format(esc_return_code)]) #, return_code])
File "/usr/lib64/python2.7/subprocess.py", line 568, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
如果我硬编码这些值(没有变量),它就起作用了。像这样:
subprocess.check_output(['remote-viewer spice://127.0.0.1:5903'])
我错过了什么?在
可以使用Popen和shell=True来运行命令
相关问题 更多 >
编程相关推荐