TTL record changes in All domains

David Ford david at blue-labs.org
Tue Jul 17 11:36:28 UTC 2007


Adam Tkac wrote:
> Stephane Bortzmeyer napsal(a):
>   
>> On Tue, Jul 17, 2007 at 12:42:04PM +0200,
>>  Adam Tkac <atkac at redhat.com> wrote 
>>  a message of 22 lines which said:
>>
>>   
>>     
>>> I don't know about any utility but I think you could write simple bash 
>>> script (something like this example)
>>>
>>> for zone in `find zones`; do
>>>   cat "${zone}" | sed 's/$TTL.*/$TTL 2D/' > "${zone}.new"
>>>   mv "${zone}.new" "${zone}"
>>> done
>>>     
>>>       
>> Warning, if there is a bug in the sed script, this will destroy the
>> old file with a new and empty one, without remorse.
>>
>> Perl may be a better idea, specially since it keeps a backup:
>>
>> perl -i.bak -p -e 's/^ *\$TTL *(.*)$/\$TTL 2D/' `find zones`
>>
>> -i : keeps a backup
>> -p : loops over the original file
>> -e : executes this instruction
>>
>> s/.../.../ : substitutes the new TTL 
>>   
>>     
> I don't think there's a bug. It exists three type of RE - basic, 
> extended and perl. sed uses basic RE and perl uses his own so it if you 
> use perl and sed with same expressions results will be different. Only 
> one problem in my sample could be if you have '$TTL' string somewhere 
> else in zone (not only on start of zone configfile). ...$TTL... could be 
> replaced by ...$TTL 2D. More safety could be substiture mv command with 
> cp and substitute 's/$TTL.*/$TTL 2D/' by 's/^$TTL/$TTL 2D/'.
>
> Adam
>
>
>   

Modern gnu sed found on RH can do changes in place with -i

for filename in zones_expr; do
   cp $filename $filename.bak
   sed -i '....' $filename
done



More information about the bind-users mailing list