Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 运行drush时,防止在命令行历史记录中记录敏感数据_Bash_Shell_Drupal_Drupal 7 - Fatal编程技术网

Bash 运行drush时,防止在命令行历史记录中记录敏感数据

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命令安装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选项上传递它的用户密码,但我不希望这些敏感信息出现在我的控制台历史记录中


我想要一些帮助来隐藏这个信息。提前感谢。

这里有两条命令可能有助于防止在命令行历史记录中记录敏感数据:

  • 在运行
    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 
    
典型的安装脚本使用这两种方法,在您的情况下,如果除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}\";