这些命令作为脚本运行时失败,并显示错误:
/etc/nginx/.htpasswd:没有这样的文件或目录
sudo touch /etc/nginx/.htpasswd
hash="$(echo -n "$MD5Password" | md5sum )"
echo "${ApplicationUserName}:$hash" >> /etc/nginx/.htpasswd
但是,当我一次手动执行它们时,它们就可以正常工作。
完整代码:
#!/bin/bash -x
yum -y update
yum install -y aws-cfn-bootstrap
yum install httpd-tools -y
echo
/opt/aws/bin/cfn-init --verbose --stack ${AWS::StackName} --resource EC2Instance --region ${AWS::Region}
/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource EC2Instance --region ${AWS::Region}
sudo touch /etc/nginx/.htpasswd
hash="$(echo -n "$MD5Password" | md5sum )"
echo "${ApplicationUserName}:$hash" >> /etc/nginx/.htpasswd
这是我在AWS Cloudformation模板中传递的用户数据的一部分。
我在这里想念什么?
答案 0 :(得分:0)
发生错误消息是因为/etc/nginx
目录不存在。更改为:
mkdir -p /etc/nginx
touch /etc/nginx/.htpasswd
应该没事的。
如评论中所述,在那里不需要或不建议使用sudo,因此我将其删除。
但是,当我一次手动执行它们时,它们就可以正常工作。
那是不可能的。在脚本或构建过程的后期,但在您手动尝试这些命令之前,必须先创建/etc/nginx
目录。也许以后再安装nginx
rpm吗?