Я пытаюсь написать AppleScript, который добавит новый виртуальный хост по имени и абсолютному пути.
Это работает, когда я пробую тестовые файлы (файлы txt на рабочем столе), но когда я пробую реальные файлы (/ private / etc / hosts и /private/etc/apache2/extras/httpd-vhosts.conf), это просто не работа.
Проблема, кажется, где-то вокруг прав пользователя, но я не знаю, как открыть файл для записи в качестве администратора. Я попробовал только то, что я делаю, «сделать сценарий оболочки», но это не работает (возможно, я использую неправильный синтаксис)
Мой код:
on run (input)
display dialog "New VirtualHost name" default answer ""
set VirtualHostName to text returned of result
display dialog "Absolute path to VirtualHost's root" default answer "/Library/Webserver/Documents"
set VirtualHostRoot to text returned of result
try
set hostsNL to "\n127.0.0.1 " & VirtualHostName
set httpdVhostNL to "\n<VirtualHost 127.0.0.1:80>
ServerAdmin foo@example.com
ServerName " & VirtualHostName & ".local
DocumentRoot '" & VirtualHostRoot & "'
ErrorLog '/private/var/log/apache2/" & VirtualHostName & "-error_log'
CustomLog '/private/var/log/apache2/" & VirtualHostName & "-access_log' common </VirtualHost>"
set hosts to open for access (POSIX file "/private/etc/hosts") with write permission
write hostsNL to hosts starting at eof
close access hosts
set httpdVhosts to open for access (POSIX file "/private/etc/apache2/extras/httpd-vhosts.conf") with write permission
write httpdVhostNL to httpdVhosts starting at eof
close access httpdVhosts
do shell script "apachectl graceful" with administrator privileges
return true
on error
try
close access hosts
close access httpdVhosts
end try
return false
end try end run
Или: есть ли другой простой способ создания виртуальных хостов?