私のスクリプト:
#!/usr//bin/perl
#
# Script to balance accounts between servers
# By Philip Gabrielsen
#
use strict;
use warnings;
START:
print "\nZimbra account moving script\n";
print "First we will collect data from Zimbra, this may take a while.\n\n";
my %accounts;
DATACOLLECT:
print "Collecting Zimbra mailbox server(s)... ";
my $servers = `zmprov gas mailbox`;
print "OK\n";
print "Collecting numbers of accounts per server... ";
foreach my $server (split(/\n/, $servers)) {
$accounts{$server} = `zmprov -l gaa -s $server|wc -l`;
}
print "OK\n";
foreach my $server (keys %accounts) {
print "\nServer $server with ". $accounts{$server} ." accounts\n";
}
print "TEST, is total number of accounts good?";
$accounts{'total'} = 0;
foreach my $server1 (keys %accounts) {
$accounts{'total'} = $accounts{'total'} + $accounts{$server1};
print "\nAdded $accounts{$server1} and total is now $accounts{'total'}";
}
print "\nTotal number of accounts: $accounts{'total'}\n";
出力: [zimbra@snake tmp]$ perl accounts.pl
Zimbra account moving script
First we will collect data from Zimbra, this may take a while.
Collecting Zimbra mailbox server(s)... OK
Collecting numbers of accounts per server... OK
Server snake with 363
accounts
Server tiger with 431
accounts
Server lion with 273
accounts
TEST, is total number of accounts good?
Added 363
and total is now 363
Added 431
and total is now 794
Added [zimbra@tiberius tmp]$ perl accounts.pl
Zimbra account moving script
First we will collect data from Zimbra, this may take a while.
Collecting Zimbra mailbox server(s)... OK
Collecting numbers of accounts per server... OK
Server titus.zimbra.h.bitbit.net with 363
accounts
Server tiberius.zimbra.h.bitbit.net with 431
accounts
Server otho.zimbra.h.bitbit.net with 273
accounts
TEST, is total number of accounts good?
Added 363
and total is now 363
Added 431
and total is now 794
Added 1588 and total is now 1588
Added 273
and total is now 1861
Total number of accounts: 1861 and total is now 1588
Added 273
and total is now 1861
Total number of accounts: 1861
最初に見たように、各サーバーからアカウントを一覧表示すると正しい数が表示されますが、最後の部分で、すべての $accounts を合計値に追加したい場合、1588 という数字がポップアップします。これは 273 のはずです...