Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I was messing with munin configuration and plugins, copy/pasting some staff when I accidentally ran this in terminal:

I wonder if I unintentionally messed up something :S

#!/usr/bin/perl
#
# Plugin to monitor the number of accesses to Apache servers. It handles
# a list of ports passed in from a plugin configuration file.
#
# Requirements:
#   - Needs access to http://localhost/server-status?auto (or modify the
#     address for another host). See your apache documentation on how to
#     set up this url in your httpd.conf. Apache needs ExtendedStatus
#     enabled for this plugin to work
#
# Tip: To see if it's already set up correctly, just run this plugin
# with the parameter "autoconf". If you get a "yes", everything should
# work like a charm already.
#
# Parameters supported:
#
#   config
#   autoconf
#
# Configurable variables
#
#   url      - Override default status-url
#   port     - HTTP port numbers
#
#   ssl      - activate SSL (add env.ssl yes in munin plugin configuration)
#   urls     - Override default status-url (SSL)
#   ports    - HTTPS port numbers (SSL)
#
# $Log$
# Revision 1.13  2006/03/07 20:30:00 fra519
# adapt script for Apache-SSL Server.
#
# Revision 1.12  2004/12/10 18:51:43  jimmyo
# linux/apt* has been forced to LANG=C, to get predictable output.
#
# Revision 1.11  2004/12/10 10:47:47  jimmyo
# Change name from ${scale} to ${graph_period}, to be more consistent.
#
# Revision 1.10  2004/12/09 22:12:54  jimmyo
# Added "graph_period" option, to make "graph_sums" usable.
#
# Revision 1.9  2004/09/26 22:14:39  jimmyo
# Changd COUNTER -> DERIVE for some plugins. Set min/max values.
#
# Revision 1.8  2004/05/20 13:57:11  jimmyo
# Set categories to some of the plugins.
#
# Revision 1.7  2004/05/14 21:16:46  jimmyo
# "Upped" som plugins from contrib/manual to auto.
#
# Revision 1.6  2004/04/27 21:32:06  jimmyo
# Clarified the vlabels in the apache-plugins (Deb#238594).
#
# Revision 1.5  2004/04/27 08:46:57  jimmyo
# Fixed broken autoconf in apache-* plugins (Deb#236144).
#
# Revision 1.4  2004/02/18 15:47:35  jimmyo
# The generic/apache_* plugins now have defined max values.
#
# Revision 1.3  2004/02/03 17:17:25  jimmyo
# Generic/apache-plugins have been modified to properly to report the correct autoconf value. Also, bugfixes in _processes and _volume.
#
# Revision 1.2  2004/01/29 18:47:30  jimmyo
# Made plugins apache_* compatible with older versions of LWP::UserAgent (SF#881411).
#
# Revision 1.1  2004/01/02 18:50:00  jimmyo
# Renamed occurrances of lrrd -> munin
#
# Revision 1.1.1.1  2004/01/02 15:18:07  jimmyo
# Import of LRRD CVS tree after renaming to Munin
#
# Revision 1.4  2003/12/18 16:35:33  jimmyo
# fail more gracefully when using uninstalled perl modules.
#
# Revision 1.3  2003/11/07 17:43:16  jimmyo
# Cleanups and log entries
#
#
#
# Magic markers:
#%# family=auto
#%# capabilities=autoconf

my $ret = undef;
my $ssl = undef;

if (! eval "require LWP::UserAgent;")
{
    $ret = "LWP::UserAgent not found";
}
if (! eval "require Crypt::SSLeay;" and exists $ENV{'ssl'})
{
    $ssl = "Crypt::SSLeay not found";
}

my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://127.0.0.1:%d/server-status?auto";
my @PORT = exists $ENV{'port'} ? split(' ', $ENV{'port'}) : (80);

my $URLS = exists $ENV{'urls'} ? $ENV{'urls'} : "https://127.0.0.1:%d/server-status?auto";
my @PORTS = exists $ENV{'ports'} ? split(' ', $ENV{'ports'}) : (443);

if ( exists $ARGV[0] and $ARGV[0] eq "autoconf" )
{
    if ($ret)
    {
        print "no ($ret)\n";
        exit 1;
    }

    if ($ssl) {
        print "no ($ssl)\n";
        exit 1;
    }

    my $ua = LWP::UserAgent->new(timeout => 30);

    my @badports;
    foreach my $port (@PORT) {
        my $url = sprintf $URL, $port;
        my $response = $ua->request(HTTP::Request->new('GET',$url));
        push @badports, $port unless $response->is_success and $response->content =~ /^Total Accesses:/im;
    }
    if (exists $ENV{'ssl'}) {
        foreach my $port (@PORTS) {
            my $url = sprintf $URLS, $port;
            my $response = $ua->request(HTTP::Request->new('GET',$url));
            push @badports, $port unless $response->is_success and $response->content =~ /^Total Accesses:/im;
        }
    }
    if (@badports) {
        print "no (no apache server-status or ExtendedStatus missing on ports @badports)\n";
        exit 1;
    } else {
        print "yes\n";
        exit 0;
    }
}

if ( exists $ARGV[0] and $ARGV[0] eq "config" )
{
    print "graph_title Apache accesses\n";
    print "graph_args --base 1000\n";
    print "graph_vlabel accesses / \${graph_period}\n";
    print "graph_category apache\n";
    foreach my $port (@PORT) {
        print "accesses$port.label port $port\n";
        print "accesses$port.type DERIVE\n";
        print "accesses$port.max 1000000\n";
        print "accesses$port.min 0\n";
    }
    if (exists $ENV{'ssl'}) {
        foreach my $port (@PORTS) {
            print "accesses$port.label port $port\n";
            print "accesses$port.type DERIVE\n";
            print "accesses$port.max 1000000\n";
            print "accesses$port.min 0\n";
        }
    }
    exit 0;
}

my $ua = LWP::UserAgent->new(timeout => 30);

foreach my $port (@PORT) {
    my $url = sprintf $URL, $port;
    my $response = $ua->request(HTTP::Request->new('GET',$url));
    if ($response->content =~ /^Total Accesses:\s+(.+)$/im) {
        print "accesses$port.value $1\n";
    } else {
        print "accesses$port.value U\n";
    }
}

if (exists $ENV{'ssl'}) {
    foreach my $port (@PORTS) {
        my $url = sprintf $URLS, $port;
        my $response = $ua->request(HTTP::Request->new('GET',$url));
        if ($response->content =~ /^Total Accesses:\s+(.+)$/im) {
            print "accesses$port.value $1\n";
        } else {
            print "accesses$port.value U\n";
        }
    }
}
# vim:syntax=perl
share|improve this question
add comment

1 Answer 1

up vote 2 down vote accepted

I wonder if I unintentionally messed up something

Since you pasted the file to the terminal, each line ran as a command. Perl is not bash, so unless you were root you're safe. You can safely delete the extra directories.

share|improve this answer
    
it did create two folders in my user home though: is_success and content, that's why I was worried. –  Sandro Dzneladze Jun 3 '12 at 12:56
1  
in terminal each line ran as a command... –  Sandro Dzneladze Jun 3 '12 at 12:57
    
Oh ok, I thought you executed the file. I'll edit. –  izx Jun 3 '12 at 12:59
    
hm, history shows: 1880 sudo wget #!/usr/bin/perl 1881 # 1882 # Plugin to monitor the number of accesses to Apache servers. It handles 1883 # a list of ports passed in from a plugin configuration file. 1884 # –  Sandro Dzneladze Jun 3 '12 at 13:21
    
I was trying to wget some url when I pasted in this perl script. So first line did run as sudo but on wget :) –  Sandro Dzneladze Jun 3 '12 at 13:23
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.