I ran this code and got:
Use of uninitialized value at ./migrate_other_functionals_test2.pl line 135.
Records Examined: 1
Records Updated: 0
Completed normally. 1 records examined. 0 records updated.
I don't understand why it is saying $um_user_type is not initialized. And why it only found 1 account when I know there are hundreds.
When I do an ldapsearch:
ldapsearch -h csdir02 -D "cn=xxxxxxx" -w "xxx" -b "ou=functionals,o=xxxx.com,o=xxxx" -s sub 'umusertype=F'
I get a ton back.
#!/usr/local/bin/perl -w
# Modules used
use Mozilla::LDAP::Conn; # Main "OO" layer for LDAP
use Mozilla::LDAP::Utils;
use Mozilla::LDAP::Entry;
use Mozilla::LDAP::API qw(:constant :api);
use Date::Calc qw(:all);
use Time::Local;
use strict;
use English;
use locale;
use FileHandle;
# UM connection variables
my (%ld) = Mozilla::LDAP::Utils::ldapArgs();
$ld{port} = 389;
$ld{root} = "ou=people,o=xxx.com,o=xxx";
$ld{base} = "ou=functionals,o=xxxx.com,o=xxxx";
$ld{scope} = "subtree";
my $UM_conn;
my @attr = ("corpid", "umaliasdate", "mail");
my $script_log = "Migrate_functionals";
my $functional_data_file = "functional.txt";
my $pager_data_file = "pager.txt";
my $log_directory = "/usr/users/xxxxxx/";
my $data_directory = "/usr/users/xxxxxxx/";
# OW connection variables
my (%owld) = Mozilla::LDAP::Utils::ldapArgs();
$owld{root} = "o=corp";
$owld{base} = "o=corp";
$owld{bind} = "cn=UM account, ou=special accounts, o=corp";
$owld{pswd} = "xxxxxxxxx";
$owld{scope} = "subtree";
my $OW_conn;
if ($ARGV[0]) {
# determine environment
if ($ARGV[0] eq "TEST") {
$ld{host} = "xxxxxxxxxxx.com";
$ld{bind} = "cn=xxxxx";
$ld{pswd} = "xxxxxxx";
$owld{host} = "xxxxxxxx.com";
$owld{port} = 3389;
} elsif ($ARGV[0] eq "PROD") {
$ld{host} = "xxxxxx.com";
$ld{bind} = "cn=xxxxxx";
$ld{pswd} = "xxxxxxx";
$owld{host} = "xxxxx.com";
$owld{port} = 2389;
} else {
usage();
}
} else {
usage();
}
print "Connecting to UM...\n";
#################################################################e
# Try to connect to the UM LDAP directory
##################################################################
$UM_conn = new Mozilla::LDAP::Conn(\%ld);
if (!$UM_conn) {
print "UM Access failed. Exiting.";
exit;
}
#################################################################e
my $record_count = 0; # How many entries we examine
my $processed_record_count = 0; # How many entries we take action o
+n
###################################################################
# Look up user(s) in UM Directory
###################################################################
# TODO: change the filter to '(&(|(usertype=F)(usertype=P))(mail=*)(!(
+umespid=4)))')
# TODO: that filter is functionals or pagers not on Exchange
my $entry = $UM_conn->search($ld{base}, $ld{scope}, "(&(|(usertype=F))
+(mail=*)(!(umespid=4)))", 0, @attr);
my $um_user_type;
if (!$entry) {
my $code = $UM_conn->getErrorCode();
if ($code == 0) {
print "No Directory records found to process on this run.\n"
} else {
print "Run terminated on LDAP Error=" . $UM_conn->getErrorStri
+ng() . ".\n";
}
$UM_conn->close;
} else {
while($entry) {
$record_count++;
my $functional = new FileHandle;
my $pager = new FileHandle;
open(FLOG, ">>$log_directory$functional_data_file") || die "can
+not create Funtional file $functional_data_file\n";
if (($um_user_type =~ /F/)) {
print FLOG "$entry->{usertype}[0] - Address $entry->{mail}
+[0]\n";
print "Functional- $entry->{usertype}[0] - Address $entry
+->{mail}[0]\n";
}
else{
$entry = $UM_conn->nextEntry();
}
last;
} # End of while loop
$UM_conn->close;
print "\nRecords Examined: $record_count\n";
print "Records Updated: $processed_record_count\n\n";
print "Completed normally. $record_count records examined. $proces
+sed_record_count records updated.\n";
} # End of else ($entry)
1;
sub usage () {
print "Usage: $0 [DEV|TEST|PROD] 2> logfile.log\n";
print " DEV - development environment\n";
print " TEST - test environment\n";
print " PROD - production environment\n";
print " logfile.log - the logfile can be used to reverse the
+ update\n";
print " when fed to the unmigrate_umaliasdate.
+pl program.\n";
exit;
}
|