2017-07-28 96 views
3

我已经编写了一个脚本来安装一些软件包到服务器列表。当我执行脚本时,mysql安装被卡在“输入root密码”部分。有什么我需要修改我的脚本?给我建议。Mysql自动安装卡住

有什么办法通过脚本本身传递mysql root密码?

下面是我用

#!/usr/bin/env bash 
read -p "Enter server name : " servername 
echo "Installing package on $servername" 
ssh "${servername}" sudo apt-get -y install apache2 mysql-server 

Installation got stuck here

即使我输入密码,就无法进行下一步的代码。我非常喜欢脚本编程。让我知道在哪里修改脚本。

回答

0
#!/usr/bin/env bash 
read -p "Enter server name : " servername 
echo "Installing package on $servername" 
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" 

上面的代码做的伎俩

注意反斜杠(\)用于提高可读性。他们允许继续下一行的命令。

2

apt-getdpkgdebconf的前端,默认情况下以交互模式运行,即使-y也不会改变这种情况。

mysql-server安装需要在安装过程中交互输入root密码。

要在基于Debian的Linux发行版上完全自动安装MySQL服务器,可以按如下方式进入非交互模式并预设MySQL root密码。

在要运行过程中的shell执行:

export DEBIAN_FRONTEND="noninteractive" 

然后

apt-get install -y debconf-utils 
debconf-set-selections <<< "mysql-server mysql-server/root_password yournewpassword" 
debconf-set-selections <<< "mysql-server mysql-server/root_password_again yournewpassword" 
apt-get install -y mysql-server-5.6