jeffpan牛人大佬:

  1. use strict;
  2. use warnings;
  3. use Net::Cloudflare::DNS;
  4. # 这是一个perl脚本,安装Net::Cloudflare::DNS模块
  5. # 你必须提供cloudflare的登陆email、api-key以及域名的zone-id,从面板可以获取到
  6. our $obj = Net::Cloudflare::DNS->new(email    => $ENV{‘CLOUDFLARE_EMAIL’},
  7.                                     api_key  => $ENV{‘CLOUDFLARE_API_KEY’},
  8.                                     zone_id  => $ENV{‘CLOUDFLARE_ZONE_ID’},
  9.                                    );
  10. # 如下三个测试函数,你自己修改成自己想要的
  11. # 这个函数用来增加dns记录
  12. add_rr();
  13. # 这个函数用来更新dns记录
  14. update_rr();
  15. #这个函数用来删除dns记录
  16. delete_rr();
  17. sub add_rr {
  18.     for (1..10) {
  19.         my $rand_hostname = int(rand(3333333)) . ".myhostnames.com";
  20.         my $rand_ip = int(rand(255)) ."." . int(rand(255)). ".". int(rand(255)). ".". int(rand(255));
  21.         $obj->create_record(type=>"A", name=>$rand_hostname,content=>$rand_ip,ttl=>1);
  22.     }
  23. }
  24. sub get_rr {
  25.     my @records;
  26.     my $ref = $obj->get_records(‘per_page’=>100);
  27.     my @rr = @{$ref->{result}};
  28.     for (@rr) {
  29.         if ($_->{name} =~ /^\d+/) {
  30.           push @records, ;
  31.         }
  32.     }
  33.     return @records;
  34. }
  35. sub update_rr {
  36.     my @records = get_rr();
  37.     for  (@records) {
  38.         my $id = $_->;
  39.         my $hostname = $_->;
  40.         my $rand_ip = int(rand(255)) ."." . int(rand(255)). ".". int(rand(255)). ".". int(rand(255));
  41.         $obj->update_record($id, type=>"A", name=>$hostname,content=>$rand_ip,ttl=>1);
  42.     }
  43. }
  44. sub delete_rr {
  45.     my @records = get_rr();
  46.     for  (@records) {
  47.         $obj->delete_record($_->);
  48.     }
  49. }