我正在开发一个自动化安装程序脚本,其中安装程序被编写为shell脚本,并且将以交互方式进行。代码如下所示:
print "Installing the build using command: \n" + str(cmd)
proc = Popen(cmd,
stdin=PIPE,
stdout=PIPE,
stderr=PIPE,
shell=True
)
proc.stdin.flush()
proc.stdin.write("y\n")
proc.stdin.flush()
proc.stdin.write("y\n")
proc.stdin.flush()
proc.stdin.write("root\n")
print "Aftre user name"
proc.stdin.flush()
proc.stdin.write("password\n")
proc.stdin.flush()
(stdout, stderr) = proc.communicate("\n")
print "Build %s is installed successfully" % build
proc.stdin.close()
print stderr
print stdout
当命令在手动中执行时,我们将看到输出类似于:
press y to continue or c to cancel:
.
.
press y to continue or c to cancel:
.
.
Enter Mysql user name:
Enter password:
但是最后一个stdin(用于输入密码的代码)不起作用。原因可能是输入密码命令未写入安装程序脚本。它是mysql -p命令的输出。
由于某些原因我们没有存储mysql密码。因此密码不会直接作为参数发送到命令中。最重要的是我不能使用第三方库。
在研究这个问题时,我想出了以下疑问:
请建议是否有人使用python和安装程序脚本。