����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.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 : /proc/1630575/root/proc/1630575/root/proc/self/root/usr/lib64/nagios/plugins/extra/ |
Upload File : |
#!/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;
}