CentOS7下用Vagrant自动化安装pgAdmin4时,如何自动填充Python脚本输入?
如何在CentOS7上通过Vagrant自动化安装pgAdmin4时自动完成setup.py的输入?
问题描述
我正在用Vagrant在CentOS7上自动化部署pgAdmin4,执行/usr/lib/pgadmin4/setup.py时,脚本会要求输入初始pgAdmin用户的邮箱和密码。我试过用Shell的Here Document方式自动输入:
python /usr/lib/pgadmin4/setup.py <<EOF mail@domain.com password EOF
但执行后出现提示内容混乱的情况,有没有办法实现这个Python脚本的输入自动化?
解决方案
方法1:使用expect工具处理交互式输入
expect是专门用于处理命令行交互场景的工具,能精准响应脚本的输入提示:
- 先在CentOS7上安装expect:
yum install -y expect
- 创建expect脚本(例如
pgadmin_setup.exp):
#!/usr/bin/expect -f set timeout 10 spawn python /usr/lib/pgadmin4/setup.py expect "Email address:" send "mail@domain.com\r" expect "Password:" send "password\r" expect "Retype password:" send "password\r" expect eof
- 赋予脚本执行权限并运行:
chmod +x pgadmin_setup.exp ./pgadmin_setup.exp
方法2:通过环境变量跳过交互(推荐)
pgAdmin4的setup.py支持通过环境变量直接传入必要参数,完全避免交互流程,也不会出现输出混乱:
export PGADMIN_SETUP_EMAIL="mail@domain.com" export PGADMIN_SETUP_PASSWORD="password" python /usr/lib/pgadmin4/setup.py
方法3:使用管道传递输入
如果不想额外安装工具,可尝试用管道将输入内容传递给脚本(注意setup.py通常要求重复输入密码,需传入两次):
echo -e "mail@domain.com\npassword\npassword" | python /usr/lib/pgadmin4/setup.py
内容的提问来源于stack exchange,提问作者ERemarque
相关产品推荐
相关产品推荐

