AppleScript для создания VirtualHost - PullRequest
0 голосов
/ 06 августа 2010

Я пытаюсь написать 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

Или: есть ли другой простой способ создания виртуальных хостов?

1 Ответ

1 голос
/ 11 декабря 2010

Вместо того, чтобы выполнять основную часть работы в AppleScript, сделайте это в сценарии оболочки.Передайте имя виртуального хоста и корень документа в качестве аргументов командной строки сценарию оболочки, который вы выполняете с правами администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...