Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

Cloudflare api - Identify and remove a record

For a project I need to remove a a record from a CF account. When I started I didn't think this would be hard. But now I reached that part and I'm stuck. I'm writing a bash script and I only have that ip and/or a record name. However according to the CF I need to know the record id.

http://snapr.pw/i/95be42bf75701e07e980dd6899ed56.png

And to get the record id I need to call rec_load_all. This will return all the records for that given domain. Now the problem is, how am I going to identify the right record id from the response from Cloudflare in bash?

Cloudflare api documentation: https://www.cloudflare.com/docs/client-api.html

Comments

  • bdtechbdtech Member
    edited February 2014

    Traverse, match the same fqdn or IP, then grab the record_id. I'd recommend PHP and execute via the command line. It will provide more functionality and you would exec just like bash anyway

  • blackblack Member
    edited February 2014

    Here's a snippet of code I have, though it might have an issue with www.something.com vs something.com. I can't remember if I fixed it or not. It's something to start off, I guess.

    $tkn is your cloudflare API token

    $email is your cloudflare email address

    function rec_load_all() {
    curl https://www.cloudflare.com/api_json.html \
      -d 'a=rec_load_all' \
      -d "tkn=$tkn" \
      -d "email=$email" \
      -d "z=$1" -s | python -mjson.tool > results.txt
    }
    
    #$1 = searching for that zone's dns ID
    function getDNSID() {
            dnsLineNum=`grep -E "$1" -n results.txt | head -n 1 |  cut -d ":" -f1`;
            echo "dns line #:$dnsLineNum";
            dnsIDLineNum=`echo "$dnsLineNum + 13" | bc -q`;
            echo "dns id line #: $dnsIDLineNum";
            DNSID=`sed -n "$dnsIDLineNum p" results.txt | cut -d ":" -f2 | sed "s/\"//g;s/ //;s/\,//";`
    }
    
Sign In or Register to comment.