=head1 SYNOPSIS
- Usage: tunnel.pl [-u|sage] [-h|elp] [-ve|rbose] [-d|ebug]
-
- Where:
-
- -u|sage: Displays this usage
- -h|elp: Display full help
- -ve|rbose: Be verbose
- -d|ebug: Output debug messages
- -host1: First host for tunnel (Default: localhost)
- -port1: Port for host1
- -host2: Second host for tunnel (Default: defaria.com)
- -port2: Port for host2
- -a|nnounce: Whether to announce startup (Default false)
- -maxtretries: Maximum number of retry attempt to reestablish tunnel
- (Default 3)
- -nodaemon: Whether to go into daemon mode (Default: Daemon mode)
+ Usage: tunnel.pl [-u|sage] [-h|elp] [-ve|rbose] [-d|ebug]
+
+ Where:
+ -u|sage: Displays this usage
+ -h|elp: Display full help
+ -ve|rbose: Be verbose
+ -d|ebug: Output debug messages
+ -host1: First host for tunnel (Default: localhost)
+ -port1: Port for host1
+ -host2: Second host for tunnel (Default: defaria.com)
+ -port2: Port for host2
+ -a|nnounce: Whether to announce startup (Default false)
+ -ap|pend Append to logfile (Default: Noappend)
+ -maxtretries: Maximum number of retry attempt to reestablish tunnel
+ (Default 3)
+ -nodaemon: Whether to go into daemon mode (Default: Daemon mode)
=head1 DESCRIPTION
port2 => 25,
remotehost => 'defaria.com',
maxretries => 3,
- daemon => 1,
);
+# Perlcritic complains if $DB::OUT is used only once.
+no warnings;
+$opts{daemon} = 1 unless defined $DB::OUT;
+use warnings;
+
my ($log, $ssh);
sub Report ($;$) {
RETRY:
my ($fh, $filename) = tempfile;
- my $ssh = Net::OpenSSH->new(
+ $ssh = Net::OpenSSH->new(
$opts{remotehost},
master_opts => $tunnelStr,
default_stderr_file => $filename
unlink $filename;
- if (grep /address already in use/i, @lines) {
+ if (grep { /address already in use/i } @lines) {
Report 'Unable to start tunnel - Address already in use', 1;
} else {
my $msg = 'Ssh tunnel ';
Report("Ssh tunnel terminated unexpectedly - Maximum retry count hit ($opts{maxretries}) - giving up", 1)
if $retryattempts++ >= $opts{maxretries};
- $opts{announce} = $retryattempts;
-
- Report 'Ssh tunnel terminated unexpectedly - Attempting restart';
-
undef $ssh;
goto RETRY;
'announce!',
'maxretries=i',
'daemon!',
+ 'append',
) || Usage;
-# Turn off daemon mode if we are in the Perl debugger;
-no warnings; # Ignore warning about used only once $DB::OUT when not in debugger
-$opts{daemon} = 0 if defined $DB::OUT;
-use warnings;
-
$log = Logger->new(
path => '/var/local/log',
name => "$Logger::me",
timestamped => 'yes',
- append => 'yes',
+ append => $opts{append},
);
$log->msg("$FindBin::Script v$VERSION");
$SIG{INT} = $SIG{TERM} = \&interrupt;
-EnterDaemonMode if $opts{daemon};
+EnterDaemonMode unless $opts{daemon} and get_debug;
tunnel;