Created
October 23, 2012 00:26
-
-
Save wolever/3935850 to your computer and use it in GitHub Desktop.
OpenVPN watchdog which will restart the OpenVPN daemon if it decides to go away
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
IFS="`printf "\n\t"`" | |
set -eu | |
cd "`dirname "$0"`" | |
outfile="/dev/null" | |
if [[ "${1-}" == "-v" ]]; then | |
outfile="/dev/stdout" | |
verbose=true | |
shift | |
fi | |
if [[ -z "${1-}" || "${1-}" =~ "^-" ]]; then | |
echo "usage: $0 [-v] HOST" | |
echo "Exits with a non-zero status if HOST is down" | |
exit 1 | |
fi | |
ping -W5 -c3 "$1" &> "$outfile" && true | |
down="$?" | |
if [[ ! -z "${verbose-}" ]]; then | |
if [[ "$down" -ne "0" ]]; then | |
msg="down" | |
else | |
msg="up" | |
fi | |
echo "$1 is $msg" | |
fi | |
exit "$down" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
IFS="`printf "\n\t"`" | |
set -eu | |
cd "`dirname "$0"`" | |
chkhost="$(which chkhost 2>/dev/null || echo ./chkhost)" | |
server="${1-}" | |
if [[ -z "$server" || "$server" =~ "^-" ]]; then | |
echo "usage: $0 SERVER_INTERNAL_IP" | |
echo "example: $0 10.2.0.1" | |
echo "most useful when added to a crontab:" | |
echo " */5 * * * * debian_openvpn_watchdog 10.2.0.1 > /dev/null" | |
exit 2 | |
fi | |
echo "Checking $server..." | |
if ! "$chkhost" -v "$server"; then | |
echo "restarting openvpn..." | |
/etc/init.d/openvpn restart | |
fi |
Hey,
I have to test connectivity in a network where ping is disabled. I made a small modification to your chkhost script to test if a port is reachable (with nc
), I guess it can be helpful for someone:
#!/bin/bash
IFS="`printf "\n\t"`"
set -eu
cd "`dirname "$0"`"
outfile="/dev/null"
if [[ "${1-}" == "-v" ]]; then
outfile="/dev/stdout"
verbose=true
shift
fi
if [[ -z "${1-}" || "${1-}" =~ "^-" ]]; then
echo "usage: $0 [-v] HOST PORT"
echo "Exits with a non-zero status if PORT of HOST is reachable"
exit 1
fi
nc -zv "$1" "$2" &> "$outfile" && true
down="$?"
if [[ ! -z "${verbose-}" ]]; then
if [[ "$down" -ne "0" ]]; then
msg="down"
else
msg="up"
fi
echo "$1 is $msg"
fi
exit "$down"
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
supervisord? :D