- #!/bin/bash
- #File: openvpn_turn
- #Auth: Robin
- #Date: 2013/01/17 10-30-10
- #Desc: Start/stop openvpn client
- #Vers: 1.0
- #
- # openvpn -s --> stop openvpn client
- # openvpn -r --> start openvpn client
- #配置文件所在目錄
- CONF_DIR="/etc/openvpn"
- #配置文件
- CONF_FILE="client.conf"
- #存放用戶名和密碼,格式如下
- # user_name
- # password
- AUTH_FILE="auth"
- LOG_FILE="/tmp/openvpn.log"
- PID_FILE="/tmp/openvpn.pid"
- function do_success {
- ps -ef|grep openvpn|grep -v grep|awk '{print $2}' >> $PID_FILE
- rm $LOG_FILE
- echo -e "Start OPENVPN \033[32msuccessfully\033[0m!"
- exit 0
- }
- function do_fail {
- echo -e "Start OPENVPN \033[41mfailure\033[0m!"
- echo "Maybe you can get something useful from $LOG_FILE"
- exit 1
- }
- function if_run {
- if [ -e $PID_FILE ];then
- return 0
- else
- return 1
- fi
- }
- function start_openvpn {
- if_run
- if [ $? -eq 0 ];then
- ps -ef|grep '\<openvpn\>' |grep -v grep &> /dev/null
- if [ $? -eq 0 ];then
- echo -e "OPENVPN is \033[32malready running\033[0m!!!"
- exit 1
- else
- rm $PID_FILE
- fi
- fi
- if [ -e $LOG_FILE ];then
- echo > $LOG_FILE
- fi
- cd $CONF_DIR
- sudo openvpn --config $CONF_FILE --auth-user-pass $AUTH_FILE &> $LOG_FILE &
- echo -e "\033[33mStarting\033[0m OPENVPN..."
- sleep 5
- cat $LOG_FILE |grep "Sequence Completed" 2> /dev/null && do_success || do_fail
- }
- function stop_openvpn {
- if_run
- if [ $? -eq 1 ];then
- echo "OPENVPN is not running!"
- exit 1
- fi
- for i in `ps -ef|grep '\<openvpn\>'|grep -v grep|awk '{print $2}'`;do
- sudo kill -9 $i
- done
- rm $PID_FILE
- echo -e "OPENVPN is already \033[41mstop\033[0m."
- }
- while getopts sr SW;do
- case $SW in
- s)
- stop_openvpn
- break
- ;;
- r)
- start_openvpn
- break
- ;;
- ?)
- echo "openvpn_turn [s|r]"
- esac
- done
本文出自 “不材神木” 博客,請務必保留此出處http://ouroboros.blog.51cto.com/2468486/1120547