The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Net::RNDC - Speak the BIND Remote Name Daemon Control (RNDC) V1 protocol

SYNOPSIS

Simple synchronous command/response:

  use Net::RNDC;

  my $rndc = Net::RNDC->new(
    host => '127.0.0.1',
    port => 953,         # Defaults to 953
    key  => 'abcd',
  );

  if (!$rndc->do('status')) {
    die "RNDC failed: " . $rndc->error;
  }

  print $rndc->response;

All arguments to new() are allowed in do:

  my $rndc = Net::RNDC->new();

  my $key = 'abcd';

  for my $s (qw(127.0.0.1 127.0.0.2)) {
    if (!$rndc->do(key => $key, server => $s)) {
      my $err = $rndc->error;
    } else {
      my $resp = $rndc->response;
    }
  }

DESCRIPTION

This package provides a synchronous, easy to use interface to the RNDC V1 protocol. For more mid-level control, see Net::RNDC::Session, and for absolute control, Net::RNDC::Packet.

Constructor

new

  Net::RNDC->new(%args);

Optional Arguments:

  • key - The Base64 encoded HMAC-MD5 private key to use.

  • host - The hostname/IP of the remote server to connect to.

  • port - The port to connect to. Defaults to 953.

Methods

do

  $rndc->do($command);

  $rndc->do($commands, %args);

Connects to the remote nameserver configured in new() or passed in to %args and sends the specified command.

Returns 1 on success, 0 on failure.

Arguments:

  • $command - The RNDC command to run. For example: status.

Optional Arguments - See new() above.

error

  $rndc->error;

Returns the last string error from a call to do(), if any. Only set if do() returns 0.

response

  $rndc->response;

Returns the last string response from a call to do(), if any. Only set if do() returns 1.

SEE ALSO

Net::RNDC::Session - Manage the 4-packet RNDC session

Net::RNDC::Packet - Low level RNDC packet manipulation.

AUTHOR

Matthew Horsfall (alh) <WolfSage@gmail.com>

LICENSE

You may distribute this code under the same terms as Perl itself.