App-Netsync
view release on metacpan or search on metacpan
lib/App/Netsync.pm view on Meta::CPAN
unless ($config{'Quiet'}) {
print 'updating';
print ' (using '.$config{'SyncOID'}.')...';
print (($config{'Verbose'}) ? "\n" : (' 'x$config{'DeviceOrder'}).'0');
}
my ($successful_update_count,$failed_update_count) = (0,0);
foreach my $ip (keys %$nodes) {
my $node = $nodes->{$ip};
foreach my $serial (keys %{$node->{'devices'}}) {
my $device = $node->{'devices'}{$serial};
next unless $device->{'identified'}; # Only update identified devices.
foreach my $ifName (keys %{$device->{'interfaces'}}) {
my $interface = $device->{'interfaces'}{$ifName};
next unless $interface->{'identified'}; # Only update identified interfaces.
# Format the info to be pushed.
my $update = '';
my $empty = 1;
foreach my $field (sort keys %{$interface->{'info'}}) {
$update .= "," unless $update eq '';
$update .= $field.':'.$interface->{'info'}{$field};
$empty = 0 if defined $interface->{'info'}{$field} and $interface->{'info'}{$field} =~ /[\S]+/;
}
$update = '' if $empty;
my $note = interface_string ($interface).' ('.$interface->{'IID'}.')';
my $error = App::Netsync::SNMP::set ($config{'SyncOID'},$interface->{'IID'},$update,$node->{'session'});
unless ($error) { # Log a successful update.
$update =~ s/\n/,/g;
$update =~ s/\s+//g;
$update =~ s/:,/:(empty),/g;
note ($config{'UpdateLog'},$note.' '.$update);
++$successful_update_count;
unless ($config{'Quiet'}) {
if ($config{'Verbose'}) {
interface_dump $interface;
}
else {
print "\b"x$config{'DeviceOrder'};
printf ('%'.$config{'DeviceOrder'}.'d',$successful_update_count);
}
}
}
else { # Log a failed update.
note ($config{'UpdateLog'},$note.' error: '.$error);
++$failed_update_count;
if ($config{'Verbose'}) {
say interface_string ($interface).' failed';
say ((' 'x$config{'Indent'}).$error);
}
}
}
}
}
# Show the user how many nodes have been updated if necessary.
unless ($config{'Quiet'}) {
print $successful_update_count if $config{'Verbose'};
print ' successful';
print ' ('.$failed_update_count.' failed)' if $failed_update_count > 0;
print "\n";
}
}
=head1 AUTHOR
David Tucker, C<< <dmtucker at ucsc.edu> >>
=head1 BUGS
Please report any bugs or feature requests to C<bug-netsync at rt.cpan.org>, or through
the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=App-Netsync>. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc App::Netsync
You can also look for information at:
=over 4
=item * RT: CPAN's request tracker (report bugs here)
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=App-Netsync>
=item * AnnoCPAN: Annotated CPAN documentation
L<http://annocpan.org/dist/App-Netsync>
=item * CPAN Ratings
L<http://cpanratings.perl.org/d/App-Netsync>
=item * Search CPAN
L<http://search.cpan.org/dist/App-Netsync/>
=back
=head1 LICENSE
Copyright 2013 David Tucker.
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See L<http://dev.perl.org/licenses/> for more information.
=cut
( run in 1.438 second using v1.01-cache-2.11-cpan-39bf76dae61 )