#!/bin/bash # @ Simple bash script for stopping and starting openvpn connections. # @ Author(s): Radi Dochev, Vladimir Simeonov # @ contact: r.dochev (at) viscomp.bg || lod (at) lordofdeath.net # @ License: GPL v2 * www.gnu.org/licenses/gpl-2.0.html # @ Version: 2 # Please send me some bug reports! # Setcolor variables for output SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m" SETCOLOR_NORMAL="echo -en \\033[0;39m" SET_FIN="echo -e \\r" CMD=$(which openvpn) PID_DIR="/var/run/openvpn" LOG_DIR="/var/log/openvpn" CFG_DIR="/etc/openvpn" echo_completed() { $MOVE_TO_COL echo -n "[ " $SETCOLOR_SUCCESS echo -n $"COMPLETED" $SETCOLOR_NORMAL echo -n " ]" $SET_FIN } echo_fail() { $MOVE_TO_COL echo -n "[ " $SETCOLOR_FAILURE echo -n $"FAILED" $SETCOLOR_NORMAL echo -n " ]" $SET_FIN } start_vpn() { for x in $(cd $CFG_DIR/config; ls *.ovpn); do NAME=${x%%.ovpn} if [ ! -e $PID_DIR/$NAME.pid ] || [ ! -d /proc/$(cat $PID_DIR/$NAME.pid 2>/dev/null) ]; then echo -n "$NAME" $CMD --cd $CFG_DIR/config --config $x \ --daemon $NAME --log $LOG_DIR/ovpn-$NAME.log \ --status $LOG_DIR/ovpn-$NAME-status 10 \ --writepid $PID_DIR/$x.pid --script-security 2 echo_completed else echo_fail fi done } stop_vpn() { for x in $(cd $PID_DIR; ls *.pid); do echo -n "Stopping openvpn service:" NAME=${x%%.ovpn.pid} echo -n "$NAME" kill $(cat $PID_DIR/$x) 2>/dev/null if [ $? == "0" ]; then echo_completed else echo_fail echo -en " Openvpn service is already stopped!" echo -e \\r exit 1 fi done } CHECK=$(id --user) COMMAND="$1" case "$COMMAND" in start) echo -n "Checking root privilegies: " if [ $CHECK == "0" ]; then echo_completed echo -n "Starting OpenVPN daemon: " test -d $CFG_DIR || exit 1 test -d $LOG_DIR || mkdir -p $LOG_DIR test -d $PID_DIR || mkdir -p $PID_DIR start_vpn else echo_fail echo -en " Please use: \\033[1;32msudo $(basename $0) start\\033[0;39m" echo -e \\r exit fi ;; stop) echo -n "Checking root privilegies: " if [ $CHECK == "0" ]; then echo_completed stop_vpn else echo_fail echo -en " Please use: \\033[1;32msudo $(basename $0) stop\\033[0;39m" echo -e \\r exit fi ;; restart) $0 stop $0 start ;; * ) echo "Missing or Wrong argument!" echo "Syntax: $(basename $0) (start|stop|restart)" exit ;; esac