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

NAME

Net::IPA.pm -- Perl 5 interface of the (Free)IPA JSON-RPC API

SYNOPSIS

  use Net::IPA;

  my $ipa = new Net::IPA(
    hostname => 'ipa.server.com',
    cacert => '/etc/ipa/ca.cert',
  );

  # (a) Login can be done via Kerberos
  $ipa->login();

  # (b) Login can be done via Kerberos (creating the ticket)
  $ipa->login(
    username => 'admin',
    keytab => '/etc/ipa/admin.keytab'
  );

  # (c) Login can be done using username and password
  $ipa->login(
    username => 'admin',
    password => 'admin-password'
  );

  # Control error
  die $ipa->error if($ipa->error);

  # $user_show is of the type Net::IPA::Response
  my $user_show = $ipa->user_show('username');
  die 'Error: ' . $user_show->error_string() if($user_show->is_error);

  # Requests can be batched
  use Net::IPA::Methods;
  my @users_show = $ipa->batch(
    Net::IPA::Methods::user_show('username1'),
    Net::IPA::Methods::user_show('username2'),
    Net::IPA::Methods::user_show('username3'),
  );

  foreach my $user_show (@users_show){
    # $user_show is of the type Net::IPA::Response
    if($user_show->is_error){
        print 'Error: ' . $user_show->error_string() . "\n";
        next;
    }

    # Do something
  }

For methods look at the Net::IPA::Methods module.