fix localenv discovery for scripts

This commit is contained in:
Oliver Gorwits
2013-06-09 15:37:26 +01:00
parent 1af2f78dd4
commit 79fe5b59e6
8 changed files with 104 additions and 77 deletions

View File

@@ -108,6 +108,7 @@ lib/App/Netdisco/Manual/ReleaseNotes.pod
lib/App/Netdisco/Manual/WritingPlugins.pod
lib/App/Netdisco/Util/Device.pm
lib/App/Netdisco/Util/DNS.pm
lib/App/Netdisco/Util/Noop.pm
lib/App/Netdisco/Util/Port.pm
lib/App/Netdisco/Util/PortMAC.pm
lib/App/Netdisco/Util/SanityCheck.pm

View File

@@ -60,4 +60,4 @@ resources:
homepage: http://netdisco.org/
license: http://opensource.org/licenses/bsd-license.php
repository: git://git.code.sf.net/p/netdisco/netdisco-ng
version: 2.007000_006
version: 2.007000_007

View File

@@ -3,14 +3,12 @@
use strict;
use warnings FATAL => 'all';
use FindBin;
FindBin::again();
our $home;
BEGIN {
# try really hard to find a localenv if one isn't already in place.
$home = ($ENV{NETDISCO_HOME} || $ENV{HOME});
eval "use Daemon::Control";
eval "require App::Netdisco::Util::Noop";
if ($@) {
use File::Spec;
@@ -22,7 +20,10 @@ BEGIN {
}
}
use FindBin;
FindBin::again();
use Path::Class;
use Daemon::Control;
my $netdisco = file($FindBin::RealBin, 'netdisco-daemon-fg');
my @args = (scalar @ARGV > 1 ? @ARGV[1 .. $#ARGV] : ());

View File

@@ -1,13 +1,11 @@
#!/usr/bin/env perl
use FindBin;
FindBin::again();
our $home;
BEGIN {
# try really hard to find a localenv if one isn't already in place.
$home = ($ENV{NETDISCO_HOME} || $ENV{HOME});
eval "use Daemon::Control";
eval "require App::Netdisco::Util::Noop";
if ($@) {
use File::Spec;
@@ -19,11 +17,14 @@ BEGIN {
}
}
use FindBin;
FindBin::again();
use Path::Class;
BEGIN {
# stuff useful locations into @INC and $PATH
my $location = $FindBin::RealBin;
use Path::Class;
unshift @INC,
dir($location)->parent->subdir('lib')->stringify,
dir($location, 'lib')->stringify;
@@ -35,6 +36,7 @@ BEGIN {
use App::Netdisco;
use Dancer ':script';
use Dancer::Plugin::DBIC 'schema';
info "App::Netdisco version $App::Netdisco::VERSION loaded.";
use 5.010_000;

View File

@@ -1,5 +1,22 @@
#!/usr/bin/env perl
our $home;
BEGIN {
# try really hard to find a localenv if one isn't already in place.
$home = ($ENV{NETDISCO_HOME} || $ENV{HOME});
eval "require App::Netdisco::Util::Noop";
if ($@) {
use File::Spec;
my $localenv = File::Spec->catfile($FindBin::RealBin, 'localenv');
exec($localenv, $0, @ARGV) if -f $localenv;
$localenv = File::Spec->catfile($home, 'perl5', 'bin', 'localenv');
exec($localenv, $0, @ARGV) if -f $localenv;
die "Sorry, can't find libs required for App::Netdisco.\n";
}
}
use FindBin;
FindBin::again();
use Path::Class 'dir';
@@ -16,71 +33,6 @@ use App::Netdisco;
use Dancer qw/:moose :script/;
use Dancer::Plugin::DBIC 'schema';
=head1 NAME
netdisco-do - Run any Netdisco poller job from the command-line.
=head1 USAGE
~/bin/netdisco-do <action> [-D] [-d <device> [-p <port>] [-e <extra>]]
Regardless of Netdisco configuration, debug level logging is enabled if the
C<-D> flag is given.
=head1 DESCRIPTION
This program allows you to run any Netdisco poller job from the command-line.
Note that some jobs (C<discoverall>, C<macwalk>, C<arpwalk>) simply add
entries to the Netdisco job queue for other jobs, so won't seem to do much
when you trigger them.
=head1 ACTIONS
=head2 discover
Run a discover on the device (specified with C<-d>).
=head2 macsuck
Run a macsuck on the device (specified with C<-d>).
=head2 arpnip
Run an arpnip on the device (specified with C<-d>).
=head2 set_location
Set the SNMP location field on the device (specified with C<-d>). Pass the
location string in the C<-e> extra parameter.
=head2 set_contact
Set the SNMP contact field on the device (specified with C<-d>). Pass the
contact name in the C<-e> extra parameter.
=head2 set_portname
Set the description on a device port. Requires the C<-d> parameter (device),
C<-p> parameter (port), and C<-e> parameter (description).
=head2 set_portcontrol
Set the up/down status on a device port. Requires the C<-d> parameter
(device), C<-p> parameter (port), and C<-e> parameter ("up" or "down").
=head2 set_vlan
Set the native VLAN on a device port. Requires the C<-d> parameter (device),
C<-p> parameter (port), and C<-e> parameter (VLAN number).
=head2 set_power
Set the PoE on/off status on a device port. Requires the C<-d> parameter
(device), C<-p> parameter (port), and C<-e> parameter ("true" or "false").
=cut
info "App::Netdisco version $App::Netdisco::VERSION loaded.";
use Try::Tiny;
@@ -164,3 +116,68 @@ info sprintf '%s: finished at %s', $action, scalar localtime;
info sprintf '%s: status %s: %s', $action, $status, $log;
exit ($status eq 'done' ? 0 : 1);
=head1 NAME
netdisco-do - Run any Netdisco poller job from the command-line.
=head1 USAGE
~/bin/netdisco-do <action> [-D] [-d <device> [-p <port>] [-e <extra>]]
Regardless of Netdisco configuration, debug level logging is enabled if the
C<-D> flag is given.
=head1 DESCRIPTION
This program allows you to run any Netdisco poller job from the command-line.
Note that some jobs (C<discoverall>, C<macwalk>, C<arpwalk>) simply add
entries to the Netdisco job queue for other jobs, so won't seem to do much
when you trigger them.
=head1 ACTIONS
=head2 discover
Run a discover on the device (specified with C<-d>).
=head2 macsuck
Run a macsuck on the device (specified with C<-d>).
=head2 arpnip
Run an arpnip on the device (specified with C<-d>).
=head2 set_location
Set the SNMP location field on the device (specified with C<-d>). Pass the
location string in the C<-e> extra parameter.
=head2 set_contact
Set the SNMP contact field on the device (specified with C<-d>). Pass the
contact name in the C<-e> extra parameter.
=head2 set_portname
Set the description on a device port. Requires the C<-d> parameter (device),
C<-p> parameter (port), and C<-e> parameter (description).
=head2 set_portcontrol
Set the up/down status on a device port. Requires the C<-d> parameter
(device), C<-p> parameter (port), and C<-e> parameter ("up" or "down").
=head2 set_vlan
Set the native VLAN on a device port. Requires the C<-d> parameter (device),
C<-p> parameter (port), and C<-e> parameter (VLAN number).
=head2 set_power
Set the PoE on/off status on a device port. Requires the C<-d> parameter
(device), C<-p> parameter (port), and C<-e> parameter ("true" or "false").
=cut

View File

@@ -3,14 +3,12 @@
use strict;
use warnings FATAL => 'all';
use FindBin;
FindBin::again();
our $home;
BEGIN {
# try really hard to find a localenv if one isn't already in place.
$home = ($ENV{NETDISCO_HOME} || $ENV{HOME});
eval "use Daemon::Control";
eval "require App::Netdisco::Util::Noop";
if ($@) {
use File::Spec;
@@ -22,7 +20,10 @@ BEGIN {
}
}
use FindBin;
FindBin::again();
use Path::Class;
use Daemon::Control;
my $netdisco = file($FindBin::RealBin, 'netdisco-web-fg');
my @args = (scalar @ARGV > 1 ? @ARGV[1 .. $#ARGV] : ());

View File

@@ -7,7 +7,7 @@ use 5.010_000;
use File::ShareDir 'dist_dir';
use Path::Class;
our $VERSION = '2.007000_006';
our $VERSION = '2.007000_007';
BEGIN {
if (not length ($ENV{DANCER_APPDIR} || '')

View File

@@ -0,0 +1,5 @@
package App::Netdisco::Util::Noop;
# used for testing library access.
1;