分享一个通过api管理cloudflare dns记录的脚本
jeffpan大佬:
- use strict;
- use warnings;
- use Net::Cloudflare::DNS;
- # 这是一个perl脚本,安装Net::Cloudflare::DNS模块
- # 你必须提供cloudflare的登陆email、api-key以及域名的zone-id,从面板可以获取到
- our $obj = Net::Cloudflare::DNS->new(email => $ENV{‘CLOUDFLARE_EMAIL’},
- api_key => $ENV{‘CLOUDFLARE_API_KEY’},
- zone_id => $ENV{‘CLOUDFLARE_ZONE_ID’},
- );
- # 如下三个测试函数,你自己修改成自己想要的
- # 这个函数用来增加dns记录
- add_rr();
- # 这个函数用来更新dns记录
- update_rr();
- #这个函数用来删除dns记录
- delete_rr();
- sub add_rr {
- for (1..10) {
- my $rand_hostname = int(rand(3333333)) . ".myhostnames.com";
- my $rand_ip = int(rand(255)) ."." . int(rand(255)). ".". int(rand(255)). ".". int(rand(255));
- $obj->create_record(type=>"A", name=>$rand_hostname,content=>$rand_ip,ttl=>1);
- }
- }
- sub get_rr {
- my @records;
- my $ref = $obj->get_records(‘per_page’=>100);
- my @rr = @{$ref->{result}};
- for (@rr) {
- if ($_->{name} =~ /^d+/) {
- push @records, [$_->{id}, $_->{name}];
- }
- }
- return @records;
- }
- sub update_rr {
- my @records = get_rr();
- for (@records) {
- my $id = $_->[0];
- my $hostname = $_->[1];
- my $rand_ip = int(rand(255)) ."." . int(rand(255)). ".". int(rand(255)). ".". int(rand(255));
- $obj->update_record($id, type=>"A", name=>$hostname,content=>$rand_ip,ttl=>1);
- }
- }
- sub delete_rr {
- my @records = get_rr();
- for (@records) {
- $obj->delete_record($_->[0]);
- }
- }