X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=bin%2Ftunnel.pl;h=084f661c7711922419d0fc3a386bfc0403c31080;hb=4e6bdcd021a72103bfab56bc3d5a4e11e81d375a;hp=56be859f482686d44e1910a2616d7fe90990bd1c;hpb=9abf15e9b838ad1164030fe953b407c97eb8cbce;p=clearscm.git diff --git a/bin/tunnel.pl b/bin/tunnel.pl index 56be859..084f661 100755 --- a/bin/tunnel.pl +++ b/bin/tunnel.pl @@ -30,22 +30,22 @@ $Date: $ =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 @@ -68,8 +68,11 @@ use Pod::Usage; use Display; use Logger; +use Speak; use Utils; +local $0 = $FindBin::Script; + my $VERSION = '$Revision: 1.0 $'; ($VERSION) = ($VERSION =~ /\$Revision: (.*) /); @@ -84,32 +87,19 @@ my %opts = ( port2 => 25, remotehost => 'defaria.com', maxretries => 3, - daemon => 1, ); -my ($log, $ssh); - -sub Say($) { - my ($msg) = @_; - - if (-f "$FindBin::Bin/shh") { - $log->msg("Not speaking because we were asked to be quiet - $msg"); - - return; - } # if - - my ($status, @output) = Execute "/usr/local/bin/gt \"$msg\""; - - $log->err("Unable to speak (Status: $status) - " - . join ("\n", @output), $status) if $status; +# Perlcritic complains if $DB::OUT is used only once. +no warnings; +$opts{daemon} = 1 unless defined $DB::OUT; +use warnings; - return; -} # Say +my ($log, $ssh); sub Report ($;$) { my ($msg, $err) = @_; - Say $msg; + speak $msg, $log; if ($err) { $log->err($msg, $err); @@ -136,7 +126,7 @@ sub tunnel() { RETRY: my ($fh, $filename) = tempfile; - my $ssh = Net::OpenSSH->new( + $ssh = Net::OpenSSH->new( $opts{remotehost}, master_opts => $tunnelStr, default_stderr_file => $filename @@ -151,13 +141,13 @@ RETRY: 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 '; $msg .= $retryattempts ? 'reestablished' : 'established'; - Say $msg if $opts{announce}; + speak $msg, $log if $opts{announce}; $log->msg($msg); @@ -170,10 +160,6 @@ RETRY: 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; @@ -196,24 +182,20 @@ GetOptions ( '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/log', + 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;