Add to Favourites Add to Favourites    Print this Article Print this Article

How to use perl to do a mass dns update

If you need to change all of your dns servers through DirectAdmin one by one, it's easier to use perl to do a regex (regular expression) to do the replace for us with one command.

Let's assume these are the old values:
NS1:
NS2:

and these are the new values:
NS1:
NS2:

To do this, you can run the following.  (replace the bold items with your own)

cd /usr/local/directadmin/data/users
perl -pi -e 's/ns1.old.com/ns1.new.com/' */user.conf
perl -pi -e 's/ns2.old.com/ns2.new.com/' */user.conf
perl -pi -e 's/ns1.old.com/ns1.new.com/' */reseller.conf
perl -pi -e 's/ns2.old.com/ns2.new.com/' */reseller.conf

cd /var/named   #(or whatever the path to your *.db files is, eg: /etc/bind, /etc/named)
perl -pi -e 's/ns1.old.com/ns1.new.com/' *.db
perl -pi -e 's/ns2.old.com/ns2.new.com/' *.db

once your changes are done, it's a good idea to rewrite all .db files to update your serials, and also to trigger any syncs to remote dns systems:

echo "action=rewrite&value=named" >> /usr/local/directadmin/data/task.queue


Was this answer helpful?

Also Read