����JFIF��x�x����'
Server IP : 78.140.185.180 / Your IP : 3.131.13.149 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 : /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; }