我正在编写一个脚本,该脚本创建一个logstashconf文件并添加配置,删除现有的filebeat配置文件并创建一个新文件。
我使用的是cat
,但是当我运行脚本时,我得到:
./script.sh: /etc/logstash/conf.d/apache.conf : Permission denied
./script.sh: /etc/filebeat/filebeat.yml: Permission denied
这是脚本。我试过使用sudo chown -R
。我是否遗漏了什么或者有更好的方法来配置我的文件?
#!/bin/bash
sudo rm /etc/filebeat/filebeat.yml
cat > "/etc/filebeat/filebeat.yml" <<EOF
filebeat.inputs:
- type: filestream
id: my-filestream-id
enabled: true
paths:
- /home/ubuntu/logs/.*log
setup.kibana:
output.logstash:
hosts: ["169.254.169.254:5044"]
EOF
sudo touch /etc/logstash/conf.d/apache.conf
sudo cat > "/etc/logstash/conf.d/apache.conf " <<EOF
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["169.254.169.254"]
}
}
EOF
1条答案
按热度按时间gojuced71#
这里的主要问题是重定向如何工作。
根据this answer:
所有的重定向(包括〉)都是在执行实际命令之前应用的。换句话说,你的shell首先试图打开/etc/php5/apache 2/php. ini以使用你的帐户进行写操作,然后运行一个完全无用的sudo cat。
通过使用
tee
(带sudo)而不是cat
,您可以轻松地解决问题。然后,您的脚本应如下所示: