⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 openvpn.init

📁 OpenVPN is a robust and highly flexible tunneling application that uses all of the encryption, authe
💻 INIT
字号:
#!/bin/sh### BEGIN INIT INFO# Provides:                     openvpn# Required-Start:               $network# Required-Stop:                $network# Default-Start:                3 5# Default-Stop:                 0 1 2 6# Short-Description:            This shell script takes care of starting and stopping OpenVPN.# Description:                  OpenVPN is a robust and highly flexible tunneling application that uses all of the encryption, authentication, and certification features of the OpenSSL library to securely tunnel IP networks over a single UDP port. ### END INIT INFO# Contributed to the OpenVPN project by# Douglas Keller <doug@voidstar.dyndns.org># 2002.05.15# Modified for SuSE by# Frank Plohmann <openvpn@franks-planet.de># 2003.08.24# Please feel free to contact me if you have problems or suggestions# using this script.# To install:#   copy this file to /etc/rc.d/init.d/openvpn#   use the runlevel editor in Yast to add it to runlevel 3 and/or 5#   shell> mkdir /etc/openvpn#   make .conf or .sh files in /etc/openvpn (see below)# To uninstall:#   use also Yast and the runlevel editor to uninstall# Author's Notes:## I have created an /etc/init.d init script and enhanced openvpn.spec to# automatically register the init script.  Once the RPM is installed you# can start and stop OpenVPN with "service openvpn start" and "service# openvpn stop".## The init script does the following:## - Starts an openvpn process for each .conf file it finds in#   /etc/openvpn.## - If /etc/openvpn/xxx.sh exists for a xxx.conf file then it executes#   it before starting openvpn (useful for doing openvpn --mktun...).## - In addition to start/stop you can do:##   /etc/init.d/openvpn reload - SIGHUP#   /etc/init.d/openvpn reopen - SIGUSR1#   /etc/init.d/openvpn status - SIGUSR2# Modifications 2003.05.02#   * Changed == to = for sh compliance (Bishop Clark).#   * If condrestart|reload|reopen|status, check that we were#     actually started (James Yonan).#   * Added lock, piddir, and work variables (James Yonan).#   * If start is attempted twice, without an intervening stop, or#     if start is attempted when previous start was not properly#     shut down, then kill any previously started processes, before#     commencing new start operation (James Yonan).#   * Do a better job of flagging errors on start, and properly#     returning success or failure status to caller (James Yonan).## Modifications 2003.08.24#   * Converted the script for SuSE Linux distribution. #	  Tested with version 8.2 (Frank Plohmann).#		- removed "chkconfig" header#		- added Yast header#		- changed installation notes#		- corrected path to openvpn binary#		- removes sourcing "functions"#		- removed sourcing "network"#		- removed network checking. it seemed not to work with SuSE.#		- added sourcing "rc.status", comments and "rc_reset" command#		- removed "succes; echo" and "failure; echo" lines#		- added "rc_status" lines at the end of each section#		- changed "service" to "/etc/init.d/" in "In addition to start/stop"#		  section above.# Location of openvpn binaryopenvpn="/usr/local/sbin/openvpn"# Lockfilelock="/var/lock/subsys/openvpn"# PID directorypiddir="/var/run/openvpn"# Our working directorywork=/etc/openvpn# Source rc functions. /etc/rc.status# Shell functions sourced from /etc/rc.status:#      rc_check         check and set local and overall rc status#      rc_status        check and set local and overall rc status#      rc_status -v     ditto but be verbose in local rc status#      rc_status -v -r  ditto and clear the local rc status#      rc_failed        set local and overall rc status to failed#      rc_reset         clear local rc status (overall remains)#      rc_exit          exit appropriate to overall rc status#      rc_status        check and set local and overall rc status#      rc_status -v     ditto but be verbose in local rc status#      rc_status -v -r  ditto and clear the local rc status#      rc_failed        set local and overall rc status to failed#      rc_reset         clear local rc status (overall remains)#      rc_exit          exit appropriate to overall rc status# First reset status of this servicerc_reset[ -f  $openvpn ] || exit 0# See how we were called.case "$1" in  start)	echo -n $"Starting openvpn: "	/sbin/modprobe tun >/dev/null 2>&1	# From a security perspective, I think it makes	# sense to remove this, and have users who need	# it explictly enable in their --up scripts or	# firewall setups.	#echo 1 > /proc/sys/net/ipv4/ip_forward	if [ ! -d  $piddir ]; then	    mkdir $piddir	fi	if [ -f $lock ]; then	    # we were not shut down correctly	    for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do	      if [ -s $pidf ]; then		kill `cat $pidf` >/dev/null 2>&1	      fi	      rm -f $pidf	    done	    rm -f $lock	    sleep 2	fi	rm -f $piddir/*.pid	cd $work	# Start every .conf in $work and run .sh if exists	errors=0	successes=0	for c in `/bin/ls *.conf 2>/dev/null`; do	    bn=${c%%.conf}	    if [ -f "$bn.sh" ]; then		. $bn.sh	    fi	    rm -f $piddir/$bn.pid	    $openvpn --daemon --writepid $piddir/$bn.pid --config $c --cd $work	    if [ $? = 0 ]; then		successes=1	    else		errors=1	    fi	done	if [ $successes = 1 ]; then	    touch $lock	fi	rc_status -v	;;  stop)	echo -n $"Shutting down openvpn: "	for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do	  if [ -s $pidf ]; then	    kill `cat $pidf` >/dev/null 2>&1	  fi	  rm -f $pidf	done	rm -f $lock	rc_status -v	;;  restart)	$0 stop	sleep 2	$0 start	rc_status	;;  reload)	if [ -f $lock ]; then	    for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do		if [ -s $pidf ]; then		    kill -HUP `cat $pidf` >/dev/null 2>&1		fi	    done	else	    echo "openvpn: service not started"	    exit 1	fi	rc_status -v	;;  reopen)	if [ -f $lock ]; then	    for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do		if [ -s $pidf ]; then		    kill -USR1 `cat $pidf` >/dev/null 2>&1		fi	    done	else	    echo "openvpn: service not started"	    exit 1	fi	rc_status -v	;;  condrestart)	if [ -f $lock ]; then	    $0 stop	    # avoid race	    sleep 2	    $0 start	fi	rc_status	;;  status)	if [ -f $lock ]; then	    for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do		if [ -s $pidf ]; then		    kill -USR2 `cat $pidf` >/dev/null 2>&1		fi	    done	    echo "Status written to /var/log/messages"	else	    echo "openvpn: service not started"	    exit 1	fi	rc_status -v        ;;  *)	echo "Usage: openvpn {start|stop|restart|condrestart|reload|reopen|status}"	exit 1esacexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -