diff options
Diffstat (limited to 'scripts/vyatta-vtysh.pl')
-rw-r--r-- | scripts/vyatta-vtysh.pl | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/scripts/vyatta-vtysh.pl b/scripts/vyatta-vtysh.pl deleted file mode 100644 index a98083c6..00000000 --- a/scripts/vyatta-vtysh.pl +++ /dev/null @@ -1,129 +0,0 @@ -#!/usr/bin/perl -w -# -# Module: vyatta-vtysh.pl -# -# **** License **** -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# This code was originally developed by Vyatta, Inc. -# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc. -# All Rights Reserved. -# -# Author: Stig Thormodsrud -# Date: December 2007 -# Description: Wrapper script between vyatta cfg templates and vtysh -# -# **** End License **** -# - -use warnings; -use strict; -use POSIX; - -my $vtysh; - -if ( -x '/usr/bin/vyatta-vtysh' && -S '/var/run/vyatta/quagga/zebra.vty' ) { - $vtysh = '/usr/bin/vyatta-vtysh'; -} else { - $vtysh = '/usr/bin/vtysh'; -} - -my $logfile = '/tmp/vtysh.log'; - -my $ignore_error = 0; - -sub log_it { - my ($cmdline) = @_; - - if (substr($cmdline,0,2) eq "-c" and $ignore_error) { - $cmdline = "-n $cmdline"; - } - my $timestamp = strftime("%Y%m%d-%H:%M.%S", localtime); - my $user = $ENV{'USER'}; - $user = "boot" if !defined $user; - my $rc = open(my $fh, ">>", $logfile); - if (!defined $rc) { - print "Can't open $logfile: [$!]\n"; - return; - } - print $fh "$timestamp:$user [$cmdline]\n"; - close($fh); -} - -sub parse_cmdline { - my $cmdline = ""; - - foreach my $arg (@ARGV) { - if (substr($arg, 0, 2) eq "-n") { - $ignore_error = 1; - next; - } - if (substr($arg,0, 2) eq "-c") { - # - # This script expects a space between the -c and the command, - # but try to handle it anyway - # - if ($arg ne "-c") { - my $tmp = substr($arg,2); - $cmdline .= "-c \"$tmp\" "; - next; - } - } else { - $arg = " \"$arg\" "; - } - $cmdline .= $arg; - } - return $cmdline -} - -# -# Send the config to quagga -# -# Note: Quagga never exits with an error code, but it does print an -# error message to stdout. So if there is output, print it and -# exit with an error. Certain error messages we dont' care about -# such as issuing a "no <foo>" when foo doesn't exist. In those -# cases it is up to the template file whether or not to fail on -# the error code. -# -sub send_cmds_to_quagga { - my ($cmdline) = @_; - - my $output = `$vtysh $cmdline`; - if (defined $output && $output ne "") { - if ($ignore_error) { - log_it("Ignoring: $output"); - return 0; - } - log_it("Error: $output"); - print "%$output\n"; - return 1; - } - return 0; -} - -sub usage { - print "usage: $0 [-n] -c \"<quagga command>\"\n"; -} - -# -# main -# -my ($cmdline, $rc); -$cmdline = parse_cmdline(); -log_it($cmdline); -if (! defined($cmdline) or $cmdline eq "") { - usage(); - exit 1; -} -$rc = send_cmds_to_quagga($cmdline); -exit $rc - -#end of file |