所以我们有我们的软件产品,我目前正致力于自动化安装。它将采取的方式是:
config.cfg
文件,其中包含有关Apache
,Tomcat
和MySQL's
用户和密码以及端口号的所有信息。ConfigParser
提供该信息。安装程序脚本是迭代的:您像sudo foo.run
一样执行它并提示命令行,以便进行安装的人可以输入上面提到的输入。例如:
Apache user: **[foo]**
Apache password: **[bar]**
在输入该信息后,安装程序实际安装了该产品。但是,我希望自动完成整个过程,包括使用Python
输入这些信息。
到目前为止,我带来了这个:
1 from subprocess import Popen, call, PIPE, STDOUT
2 import errno
3 import os
4 fname = "/home/ec2-user/foo.run"
5 os.chmod(fname, 0777) # make it executable
6 cmd = "sudo %s" % fname
7 print cmd
9 p = Popen(cmd, stdin=PIPE, stdout=PIPE,
10 stderr=STDOUT, shell=True)
11 # now is actually the missing part ... reading from the stdout and writing
12 # to stdin ... how could I accomplish that? Is there a easier way of doing it?
13 p.wait()
所以我在设计stdin
/ stdout
部分如何工作方面遇到了一些麻烦......
我需要一个while
循环来读取它,直到stdout
为空,然后我将注入ConfigParser
中包含的数据。
有人可以举例说明如何做到这一点?有没有其他更简单的方法呢?我对任何建议持开放态度......对我来说,第一步可能是使用Python's
p.stdin.write()
从python进行手动安装,以便向安装程序提供信息。