Bash su期待组合

时间:2012-01-26 17:26:59

标签: bash expect

我目前有一个脚本来帮助我自动安装。在此安装过程中,我必须从root用户切换到另一个用户gpadmin,并运行安装的最后一段。 此时我打电话给:

su - gpadmin -c 'echo source /usr/local/greenplum-perfmon-web-4.1.2.0-build-2/gpperfmon_path.sh > .bashrc2;

source ~/.bashrc2;

gpperfmon --setup'

这有效,但我必须手动完成EULA和其他参数。我曾使用过这里的文档来完成所有操作,但由于某种原因,这会阻止创建安全证书并破坏安装。为了避免这种情况,我想尝试在gpperfmon --setup命令之后使用expect。这些期望是否会被正确调用,即使它们是使用刻度传递给不同的用户?

1 个答案:

答案 0 :(得分:0)

在摆弄后我发现期望确实有效。我误解了我的期望是完全错误的。

spawn "/gp/install/gppermon.bin"
expect "EULA:"
send \003

这可以绕过EULA,并且不需要整个SU过程。