我编写了一个脚本来将一些软件包安装到一系列服务器。当我执行该脚本时,mysql 安装卡在“输入 root 密码”部分。我需要修改脚本中的哪些部分?请给我一些建议。
有没有办法通过脚本本身传递 mysql 根密码?
#!/usr/bin/env bash
Servers_list=/opt/servers_list
for Host in $(< $Servers_list )
do
echo "Installing package on $Host"
#ssh "${Host}" apt-get -y install "${PackageName}"
ssh "${Host}" apt-get update $$ apt-get -y install apache2 apache2-doc apache2-utils mysql-server
done
答案1
尝试这个 :
#!/usr/bin/env bash
Servers_list=/opt/servers_list
for Host in $(< $Servers_list )
do
echo "Installing package on $Host"
ssh "${Host}" "echo 'mysql-server-5.7 mysql-server/root_password password your_password' | debconf-set-selections && \
echo 'mysql-server-5.7 mysql-server/root_password_again password your_password' | debconf-set-selections && \
apt-get update && \
apt-get -y install apache2 apache2-doc apache2-utils mysql-server"
done
如果您有很多服务器,您应该考虑使用 ansible 或 puppet 之类的工具。
编辑 :
- 反斜杠 (\) 用于提高可读性。它们允许在下一行继续执行命令。
- AND (&&) 运算符用于在同一行执行多个命令。如果一个命令失败,则不会执行下一个命令。
- debconf-set-selections 用于预设配置。在本例中为:密码。您可以在手册页中通过
man debconf-set-selections
在终端内输入:来找到有关它的更多信息。