Формат зоны
$ttl 14400
domain.ks.ua. IN SOA ns.domain.ua. mail.ukr.net. (2011051208 10800 14400 604800 86400)
IN NS ns.domain.ua.
IN NS ns.secondary.net.ua.
; IN NS ns3.domain.ua
IN A XXX.209.ZZZ.54
IN AAAA 2001:YYY:YY:YYY:12f5:89a1:e201:001b
domain.ks.ua. IN MX 10 mail.domain.ks.ua.
localhost A 127.0.0.1
* A XXX.209.ZZZ.54
* AAAA 2001:YYY:YYY:YYY:12f5:89a1:e201:001b
нужно распарсить zone.conf
прочитать SOA если он сегодняшний, увеличить на 1, если старый, сгенерить сегодняшний, с нулем в конце
[оверквотинг удален]
> прочитать SOA если он сегодняшний, увеличить на 1, если старый, сгенерить сегодняшний,
> с нулем в концевидимо, речь, все-таки, не про всю SOA, а только про серийный номер?
предлагаю сформулировать задачу в другой форме: сгенерировать "сегодняшний, с нулем в конце" (A), сравнить (арифметически) с "выпарсеным" (B), и, если A>B, использовать A, иначе, B+1
> видимо, речь, все-таки, не про всю SOA, а только про серийный номер?
> предлагаю сформулировать задачу в другой форме: сгенерировать "сегодняшний, с нулем в конце"
> (A), сравнить (арифметически) с "выпарсеным" (B), и, если A>B, использовать A,
> иначе, B+1Да, вы правы, сравнивать только серийный номер.
Но меня больше пугает парсинг зоны :(P.S. host -t SOA domain.ks.ua считаем грязным читом.
>> видимо, речь, все-таки, не про всю SOA, а только про серийный номер?
>> предлагаю сформулировать задачу в другой форме: сгенерировать "сегодняшний, с нулем в конце"
>> (A), сравнить (арифметически) с "выпарсеным" (B), и, если A>B, использовать A,
>> иначе, B+1
> Да, вы правы, сравнивать только серийный номер.
> Но меня больше пугает парсинг зоны :(
> P.S. host -t SOA domain.ks.ua считаем грязным читом.использование perl'а грязным читом не считается?
> использование perl'а грязным читом не считается?подтема топика указана: "Shell"
Пока perl не планируется использовать
>[оверквотинг удален]
> localhost A
> 127.0.0.1
> *
> A XXX.209.ZZZ.54
> *
> AAAA 2001:YYY:YYY:YYY:12f5:89a1:e201:001b
>
Цену решения огласи (http://www.opennet.me/openforum/vsluhforumID9/9126.html)
>[оверквотинг удален]
>> 127.0.0.1
>> *
>> A XXX.209.ZZZ.54
>> *
>> AAAA 2001:YYY:YYY:YYY:12f5:89a1:e201:001b
>>
>> нужно распарсить zone.conf
>> прочитать SOA если он сегодняшний, увеличить на 1, если старый, сгенерить сегодняшний,
>> с нулем в конце
> Цену решения огласи (http://www.opennet.me/openforum/vsluhforumID9/9126.html)0$
>[оверквотинг удален]
>>> *
>>> A XXX.209.ZZZ.54
>>> *
>>> AAAA 2001:YYY:YYY:YYY:12f5:89a1:e201:001b
>>>
>>> нужно распарсить zone.conf
>>> прочитать SOA если он сегодняшний, увеличить на 1, если старый, сгенерить сегодняшний,
>>> с нулем в конце
>> Цену решения огласи (http://www.opennet.me/openforum/vsluhforumID9/9126.html)
> 0$создал на M4 файл
scripts/zonestemplates]$ cat ./in-addr.arpa.m4
$TTL 86400
@ IN SOA iap-5.srv.domain.ru nobody.ns.fttb. (
_DATE
7200
7200
864000
86400 )
IN NS ns1.fttb.
IN NS ns2.fttb.
IN NS ns3.fttb.
IN NS ns4.fttb.$INCLUDE _FILE
Что получается:
zonestemplates]$ m4 -D_DATE=`date "+%Y%m%d%H"` -D_FILE="hui" ./in-addr.arpa.m4
$TTL 86400
@ IN SOA iap-5.srv.domain.ru. nobody.ns.fttb. (
2011051815
7200
7200
864000
86400 )
IN NS ns1.fttb.
IN NS ns2.fttb.
IN NS ns3.fttb.
IN NS ns4.fttb.$INCLUDE hui
> создал на M4 файл
> scripts/zonestemplates]$ cat ./in-addr.arpa.m4Проблем с генерации зоны нет, проблема в корректном парсинге номера зоны.
>[оверквотинг удален]
>>> *
>>> A XXX.209.ZZZ.54
>>> *
>>> AAAA 2001:YYY:YYY:YYY:12f5:89a1:e201:001b
>>>
>>> нужно распарсить zone.conf
>>> прочитать SOA если он сегодняшний, увеличить на 1, если старый, сгенерить сегодняшний,
>>> с нулем в конце
>> Цену решения огласи (http://www.opennet.me/openforum/vsluhforumID9/9126.html)
> 0$про 0$ ответ в другом топике дал.
теперь сформируй входные данные: SOA всегда в оддной строке входного файла? или может иметь вид типа:
[root@local localdomain]# cat ./srv
$TTL 86400@ IN SOA localhost.localdomain. root.localdomain. (
200811300 ; serial
8H ; refresh
2H ; retry
1W ; expiry
1D) ; minimum...
вот вопрос. я же говорил, про вход и выход. Вы читали?
PS
вынесите serial в отдельный файл, мучаейе его там и include потом. нах Вам вообще парсинг всей зоны для решения данной задачи?PSS
вход->выход->анализ->решение (теперь Вы мне уже должны 0+0=два ноля)
> теперь сформируй входные данные: SOA всегда в оддной строке входного файла? или
> может иметь вид типа:Такой формат самый тяжелый в парсинге, поэтому пока не рассматриваем.
Многие панели специально генерят конфиг в одну строчку.
>> теперь сформируй входные данные: SOA всегда в оддной строке входного файла? или
>> может иметь вид типа:
> Такой формат самый тяжелый в парсинге, поэтому пока не рассматриваем.
> Многие панели специально генерят конфиг в одну строчку.для совсем "не заню каких, чтоб не обидеть" повторюсь: serial в отдельный файл и include его потом. а с файлом в из одной строки парсинга не надо.
>> теперь сформируй входные данные: SOA всегда в оддной строке входного файла? или
>> может иметь вид типа:
> Такой формат самый тяжелый в парсинге, поэтому пока не рассматриваем.
> Многие панели специально генерят конфиг в одну строчку."панели" ??? )))
>[оверквотинг удален]
> localhost A
> 127.0.0.1
> *
> A XXX.209.ZZZ.54
> *
> AAAA 2001:YYY:YYY:YYY:12f5:89a1:e201:001b
>
> нужно распарсить zone.conf
> прочитать SOA если он сегодняшний, увеличить на 1, если старый, сгенерить сегодняшний,
> с нулем в концекстати можно обойтись cat ./xxx | sed s/что/на что/
> кстати можно обойтись cat ./xxx | sed s/что/на что/можно, в прошлый раз при глобальных заменах мне пришлось юзать tee
>> кстати можно обойтись cat ./xxx | sed s/что/на что/
> можно, в прошлый раз при глобальных заменах мне пришлось юзать teeдебилизм не лечится.