здравствуйте,
On 2011-10-12 10:04, Igor Dobryninsky wrote:
> Hello Dmitry Akindinov.
>
> On Tue, 11 Oct 2011 19:14:40 +0400
> "Dmitry Akindinov"<CGatePro@mx.ru> wrote:
>
>>> Появилась необходимость сделать массовую модификацию телефонных
>>> номеров пользователей. Для меня проще всего это сделать
>>> непосредственно в
>>> файлах /var/CommuniGate/{Accounts,Domains/*}/Settings/telnums.data
>>> с помощью sed'а (понятно, что нужно перед началом операции
>>> остановить CGP, а после - запустить).
>
>> Так не надо делать. Есть CLI с командами ListAccounts, ListObjects и
>> Get/SetAccountTelnums - ими и надо пользоваться.
>
> Я понимаю, что штатные средства лучше. Однако мне нужно прошерстить
> несколько сотен аккаунтов в более чем десятке доменов, причём дважды -
> сначала добавить новое, а через некоторое время - убрать старое. Хочется
> сделать это быстро. Штатные средства CLI такого не позволяют, даже
Да ладно вам. Скрипт на perl (с использованием CLI.pm с
<http://www.communigate.com/CGPerl/>, там же в качестве примера обхода
всех аккаунтов во всех доменах можно взять web4All.pl и ListTotals.pl)
сделает это не хуже.
> если написать сценарий для какого-нибудь expect'а, а sed - я пробовал -
> тратит на всё про всё менее секунды. На стоп/старт демона уйдёт ещё
> пара-тройка секунд. Телефоны, правда, должны будут
> перерегистрироваться, но если объявить о возможном перерыве связи и
> сделать всё ночью, то в принципе меня это не остановит.
>
> Есть какие-то соображения кроме соображений "правильности", почему так
> делать не надо?
А одной только "правильности" как аргумента недостаточно? Жаль. Это не только в отношении CGPro полезно стараться "правильно" всё делать, по жизни - тоже :-)
Вы вот файл видели и уже поняли, что туда пишутся изменения в виде аккаунт=(новый_список_значений). Если вы на остановленном сервере аккуратно допишите поверх фигурной скобки изменения в этом формате и допишете потом закрывающую фигурную скобку, сохранив формат, - то оно, наверное, заработает. А может и нет. Вы ищете гарантий там, где их вам никто не даст - при наличчи документированных методов изменений настроек.
>>> Однако выяснилось, что в файле содержится, похоже, вся история
>>> изменений данного атрибута у каждого пользователя. В связи с этим -
>>> два
>
>> Да.
>
>>> вопроса: а) зачем это нужно? и б) что лучше - убрать лишние записи
>>> или модифицировать не только последнюю, но и все остальные?
>
>> а) дописать в файл изменение эффективнее, чем перезаписывать весь
>> файл. б) лучше использовать CLI
>
> Ok, понятно.
>
-- Best regards, Dmitry AkindinovПолучено Wed Oct 12 07:51:47 2011
Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:17:18 MSK