Guest User

pdns_links

a guest
Oct 7th, 2010
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.84 KB | None | 0 0
  1. #!/bin/bash
  2. DB="MYDATABASE"
  3. PSW="MYPASSWORD"
  4.  
  5. MYSQL="mysql -N -B --password=$PSW $DB -e"
  6.  
  7. #Define here the domains that will be copied separated with '|'
  8. LINKS="PrincipalDomain1.com|CopyDomain1.com PrincipalDomain2.com|CopyDomain2.com"
  9.  
  10. function splitRows() {
  11.     spDATA="$1"
  12.     _domain_id="$COPY_ID"
  13.     _name="$(echo "$spDATA" | awk -F\\t '{print $2}')"
  14.     _type="$(echo "$spDATA" | awk -F\\t '{print $3}')"
  15.     _content="$(echo "$spDATA" | awk -F\\t '{print $4}')"
  16.     _ttl="$(echo "$spDATA" | awk -F\\t '{print $5}')"
  17.     _prio="$(echo "$spDATA" | awk -F\\t '{print $6}')"
  18.     _change_date="$(echo "$spDATA" | awk -F\\t '{print $7}')"
  19.  
  20.  
  21.     [ "$COPYRECORDS" == "EQUAL" ] && _name="$(echo $_name | sed s/"$ORIG"/"$COPY"/g)"
  22. }
  23.  
  24. function copyRecords() {
  25.     for RO in $@; do
  26.         [ "$COPYRECORDS" == "TRANSLATE" ] && RO_DATA=$($MYSQL "select domain_id,name,type,content,ttl,prio,change_date from records where id=$RO;" | sed s/"$ORIG"/"$COPY"/g)
  27.         [ "$COPYRECORDS" == "EQUAL" ] && RO_DATA=$($MYSQL "select domain_id,name,type,content,ttl,prio,change_date from records where id=$RO;")
  28.         [ -z "$RO_DATA" ] && { echo "Some error, id $RO does no exist!"; exit 2; }
  29.  
  30.         splitRows "$RO_DATA"
  31.  
  32.         if [ -z "$RECORDS_COPY" ]; then
  33.             #New record
  34.             echo "Inserting $_name"
  35.             $MYSQL "insert into records set domain_id=$_domain_id, name='$_name', type='$_type', content='$_content',ttl=$_ttl,prio=$_prio,change_date=$_change_date;"
  36.         else
  37.             #There are records to write
  38.             ID_COPY=$(echo $RECORDS_COPY | awk '{print $1}')
  39.             RECORDS_COPY=$(echo $RECORDS_COPY | awk '{for (i=2; i<=NF; i++) printf "%s ", $i;}')
  40.             echo "Updating $_name"
  41.             $MYSQL "update records set domain_id=$_domain_id, name='$_name', type='$_type', content='$_content', ttl=$_ttl, prio=$_prio, change_date=$_change_date where id=$ID_COPY;"
  42.         fi
  43.     done
  44. }
  45.  
  46. for L in $LINKS; do
  47.     ORIG="$(echo $L | cut -d\| -f1)"
  48.     COPY="$(echo $L | cut -d\| -f2)"
  49.    
  50.     ORIG_ID="$($MYSQL "select id from domains where name='$COPY'";)"
  51.     [ -z "$ORIG_ID" ] && { echo "Error: The domain $ORIG does not exist. What do you want to copy?"; exit 2; }
  52.  
  53.     COPY_ID="$($MYSQL "select id from domains where name='$COPY'";)"
  54.     [ -z "$COPY_ID" ] && { echo "Error: The domain $COPY does not exist, create it first"; exit 2; }
  55.  
  56.     RECORDS_ORIG=$($MYSQL "select r.id from records r, domains d where (r.type='A' or r.type='CNAME') and r.domain_id=d.id and d.name='$ORIG';")
  57.     RECORDS_ORIG_EQ=$($MYSQL "select r.id from records r, domains d where not(r.type='A' or r.type='CNAME') and r.domain_id=d.id and d.name='$ORIG';")
  58.     RECORDS_COPY=$($MYSQL "select r.id from records r, domains d  where r.domain_id=d.id and d.name='$COPY';")
  59.  
  60.     COPYRECORDS="EQUAL"
  61.     copyRecords $RECORDS_ORIG_EQ
  62.  
  63.     COPYRECORDS="TRANSLATE"
  64.     copyRecords $RECORDS_ORIG
  65.  
  66.     if [ ! -z "$RECORDS_COPY" ]; then
  67.         for RC in $RECORDS_COPY; do
  68.             $MYSQL "delete from records where id=$RC;"
  69.         done
  70.     fi
  71. done
Advertisement
Add Comment
Please, Sign In to add comment