Bash 运行drush时,防止在命令行历史记录中记录敏感数据
我正在尝试使用drush命令安装Drupal:Bash 运行drush时,防止在命令行历史记录中记录敏感数据,bash,shell,drupal,drupal-7,Bash,Shell,Drupal,Drupal 7,我正在尝试使用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}\"
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选项上传递它的用户和密码,但我不希望这些敏感信息出现在我的控制台历史记录中
我想要一些帮助来隐藏这个信息。提前感谢。这里有两条命令可能有助于防止在命令行历史记录中记录敏感数据:
- 在运行
之前,使用该命令提示输入密码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
~/install.conf
中,您可以执行以下操作:
#!/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}\";
到目前为止你都试了些什么?如果提供的答案没有用,请留下评论或编辑您的问题,否则您可以投票并接受。谢谢这是一个很好的解决方案,但我不想使用用户交互方式!也许我可以将这个密码存储在一个文件中并从中读取,而不是等待用户键入密码。我没有看到你的第二个解决方案建议。我会尝试第二种选择,并给你一个反馈!谢谢在这种情况下,源代码是一个很好的选择,因为您的源文件得到了很好的保护。或者,在运行drush之后,您仍然可以清理命令历史记录,这对我来说不是最好的选择,但仍然可以删除特定的命令。
#!/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}\";