#!/usr/bin/perl use strict; use warnings; use DBI; use Net::Ping; my $i = { 'cfg' => "servers.cfg" }; ## SLAVE:IP:VPNIP:GLPORT:SSHPORT open (CFG, "<", "$i->{cfg}"); print "Opening file ".$i->{cfg}."\n"; while (my $slave = ) { my ($name, $wanip, $vpnip, $glport, $sshport) = split(/:/, $slave); print "Name: ".$name."\nWanip: ".$wanip."\nVpnip: ".$vpnip."\nGlport: ".$glport."\nsshport: ".$sshport; my $pingstatus = getping($name, $wanip, $vpnip); my $glstatus = getglstatus($name, $wanip, $vpnip, $glport); print "\n" } sub getping { my $name = $_[0]; my $wanip = $_[1]; my $vpnip = $_[2]; my $ping = Net::Ping->new("icmp"); print "$wanip is "; print "NOT " unless $ping->ping($wanip, 2); print "reachable. \n"; print $vpnip . " is "; print "NOT " unless $ping->ping($vpnip, 2); print "reachable. \n"; }; sub getglstatus { #($name $wanip, $vpnip, $glport); my $name = $_[0]; my $wanip = $_[1]; my $vpnip = $_[2]; my $glport = $_[3]; my $scan = `nmap -p $glport -P0 $wanip`; if (grep (/$glport\/tcp\ open/, $scan)){ print "$name has $glport opened up on $wanip" } #if ($scan =~ //) {}; };