User Tools

Site Tools


scripts:perl:ping_check_openvpn.pl
ping_check_openvpn.pl
#!/usr/bin/perl
#
# Written by Thomas York
# Written to restart OpenVPN when pinging fails
# REQUIRED PACKAGES : p5-net-ping
#
 
$|=1;
use Net::Ping;
use POSIX qw/strftime/;
use strict;
 
###################
# <CONFIGURATION> #
###################
 
# Ping destination
my $ping_dst = "8.8.8.8";
 
# Timeout (in seconds)
my $timeout = 5;
 
####################
# </CONFIGURATION> #
####################
 
# Main program execution
 
# Create new ping object
my $objPing = Net::Ping->new("icmp");
 
# Continully ping
while () {
 
        # Ping!
        if ($objPing->ping($ping_dst, $timeout)) {
 
                # Host is alive
                # print "DEBUG : ".$ping_dst." is alive.\n";
 
        } else {
 
                # Host is dead
                # print "DEBUG : ".$ping_dst." is dead.\n";
 
                # Restart OpenVPN
                system("service", "openvpn", "restart");
 
                # Wait 15 seconds, to allow routing to come up
                sleep 15;
        }
 
        # Wait for 5 seconds before looping back around
        sleep 5;
 
}
/usr/local/www/vhost/www.fuhell.com/data/pages/scripts/perl/ping_check_openvpn.pl.txt · Last modified: 2014/09/07 19:12 by Thomas York