我尝试使用drush命令安装Drupal:
drush -y -v site-install standard --db-url=mysql://${db_user}:${db_pass}@${db_host}:${db_port}/${db_name} --account-name=${DRUPAL_ADM_USER} --account-pass=${DRUPAL_ADM_PASS} --locale=${LANG} --site-name=\"${DRUPAL_SITE_NAME}\";
它正在使用MySQL数据库,我必须在db-url选项上传递用户和密码,但我不希望这些敏感信息出现在我的控制台历史。
我想帮助隐藏这些信息。提前谢谢。
答案 0 :(得分:1)
这里有两个命令可能有助于防止在命令行历史记录中记录敏感数据:
使用read
命令在运行drush site-install
之前提示输入密码。
# Read standard input and store it into db_pass
# -s prevents echoing the input.
# -p <string> outputs the string without a trailing newline before.
read -s -p "Password : " db_pass
您还可以使用源或点运算符(source
或.
从外部文件中source
变量,但这意味着信息以纯文本形式存储(或加密最好),因此应首先考虑为此类文件设置适当的权限。用法:
# Create ~/install.conf and make it initialize db_user
echo 'db_user=foobar' > ~/install.conf
# Execute ~/install.conf commands in the current shell context.
. ~/install.conf
# Test : outputs 'foobar'
echo ${db_user}
典型的安装脚本使用这两种方法,如果要在~/install.conf
中存储/初始化除 db_pass 之外的所有变量,您将执行以下操作:
#!/bin/bash
. ~/install.conf
read -p 'Press [ Enter ] to begin installation'
while [ -z "$db_pass" ] || [ "$db_pass" != "$check" ]; do
read -s -p "Password: " db_pass && echo
read -s -p "Confirm Password : " check && echo
done
drush -y -v site-install standard --db-url=mysql:\\//${db_user}:${db_pass}@${db_host}:${db_port}/${db_name} --account-name=${DRUPAL_ADM_USER} --account-pass=${DRUPAL_ADM_PASS} --locale=${LANG} --site-name=\"${DRUPAL_SITE_NAME}\";