Как добавить текст в защищённый файл с помощью sudo

Потребовалось в скрипте автоматически генериующем инфрасруктуру домена (директории в 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. Обработка выделенного текста с помощью JS и ffwebsearch
  2. Установка VirtulaBox на Ubuntu с нестандартным ядром
  3. Обновление Gimp до 2.6
  4. Динамическое добавление swap в Linux
  5. Автомонтирование в ArchLinux

#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 


оставить комментарий