Изменить smb.conf из PHP? - PullRequest
       23

Изменить smb.conf из PHP?

1 голос
/ 27 апреля 2011

Мне нужно добавить / удалить общие ресурсы SAMBA через PHP или через SSH (ссылка ssh из PHP).

Пока единственное решение, которое я нашел, - это класс для примитивной обработки файла, в который я не очень верил с точки зрения надежности. (http://www.phpclasses.org/package/1546-PHP-Parse-and-recreate-the-Samba-smb-conf-file.html)

Не могли бы вы порекомендовать способ сделать это?

Ответы [ 2 ]

1 голос
/ 27 апреля 2011

Не могу найти что-то полезное, поэтому я бы порекомендовал также упрощенный подход.Вместо того, чтобы находить полноценный анализатор INI, желательно работать в основном в режиме добавления.Простого регулярного выражения было бы достаточно, чтобы заменить существующие разделы [share] без ущерба для остальной части файла smb.conf.

И вы можете использовать утилиту testparm для проверки правильности перед перезаписью реального файла.1004 *

define("SMB_CONF", "/etc/samba/smb.conf");

function add_share($section, $options) {

    // read old data
    #$old = parse_ini_file(SMB_CONF);
    $conf = file_get_contents(SMB_CONF);

    // merge new settings
    #if (isset($old[$section])) {
    #    $options = array_merge($old[$section], $options);
    #}

    // remove old share section, if it exists
    preg_replace("/^\[$section\]\s*\n(^(?!\[).*\n)+/m", "", $conf);

    // write out new ini file
    $conf .= "\n\n[$section]\n";
    foreach ($options as $key=>$value) {
        $conf .= "$key = $value\n";
    }
    $tmp = tempnam("/tmp/", "SMB");
    file_put_contents($tmp, $conf);

    // copy if it is syntactically correct
    if (strstr(`testparm -s $tmp 2>&1`, "OK")) {
        rename($tmp, SMB_CONF);
    }
}

Обновлено Хорошо, parse_ini_file не работает ни в одном случае.Это опрокидывает стиль smb.conf.Таким образом, вы можете только полностью заменить существующие записи, но не обновлять их.

0 голосов
/ 27 апреля 2011

Установка Zend Framework Zend_Config может быть полезна, поскольку она может читать / записывать ini-файлы.

Zend_Config_Writer

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