Потребовалось в скрипте автоматически генериующем инфрасруктуру домена (директории в httpd, имя домена, алиас в вебсервере, ..) выполнить подобный скрипт
echo echo $d IN A 192.168.80.76 >> /etc/bind/xxx.hosts
ну и разумеется получаю
bash: /etc/bind/xxx.hosts: Permission denied
Немножечко усложняем команду и получаем нужный результат
echo "echo $d IN A 192.168.80.76 >> /etc/bind/xxx.hosts" |sudo sh
ffsdmad@ffsdmad:~$
тут на лету генерируется скрипт добавляющий A запись в зону, который передаётся на выполнение оболочке запущенной с правами root
#1: Автоматически генерирующий скрипт (для которого необходимы права суперпользователя) должен запускаться с правами рута, и тогда таких костылей возникать не будет.
2009-07-28 02:51:11
#2: Ммм... А как насчет echo "something" | sudo tee -a /some/file.txt ?
2009-07-28 03:43:57
#3: можно еще sudo sh -c 'echo "bla-bla" /etc/bumbum'
2009-07-28 10:40:25
#4: sudo sh -c 'echo "bla-bla" /etc/bumbum'
в моём случае не работало, так как ' не давали вычислить $d
2009-07-28 10:50:47
#5: в моём случае не работало, так как ' не давали вычислить $d
sudo sh -c "echo $d IN A 192.168.80.76 /etc/bind/xxx.hosts"
;)
2009-07-29 09:17:20
#6: движок жрет угловые скобки :(
2009-07-29 09:20:57
#7: "в моём случае не работало, так как ' не давали вычислить $d"
используйте eval
2009-08-22 02:43:04
оставить комментарий