From: Dmitry Fedotov Date: Mon, 8 Mar 2021 17:47:48 +0000 (+0300) Subject: Add l2tp vpn connection script. Fix iface script. X-Git-Url: https://www.git.dmfe.net/?a=commitdiff_plain;h=8f4c312c51ca5d7eae53d6b41674b3e47eadabc5;p=dotfiles Add l2tp vpn connection script. Fix iface script. --- diff --git a/scripts/iface.sh b/scripts/iface.sh index 437d9b1..aa2b1f6 100755 --- a/scripts/iface.sh +++ b/scripts/iface.sh @@ -1,7 +1,7 @@ #!/bin/bash icon=î¾¥ -iface=$(ip route | awk '/^default/ { print $5 ; exit }') +iface=$(ip route | awk '/^default via/ { print $5 ; exit }') [[ ! -d /sys/class/net/${iface} ]] && exit diff --git a/scripts/vpn/l2tp b/scripts/vpn/l2tp new file mode 100755 index 0000000..ee95f4d --- /dev/null +++ b/scripts/vpn/l2tp @@ -0,0 +1,81 @@ +#!/bin/sh + +set -e + +print_help() { + printf 'Usage:\n' + printf 'l2tp --vpn_name vpn-name [--connect|--disconnect|-c|-d]\n' +} + +connect() { + local vpn_name=$1 + echo "connecting (VPN Name: $1)..." + + ipsec up ${vpn_name} + echo "c ${vpn_name}" > /var/run/xl2tpd/l2tp-control + sleep 5 + route add default dev ppp0 +} + +disconnect() { + local vpn_name=$1 + echo "disconnecting (VPN Name: ${vpn_name})..." + + route del default dev ppp0 + echo "d ${vpn_name}" > /var/run/xl2tpd/l2tp-control + ipsec down ${vpn_name} +} + +die() { + printf '%s\n' "$1" >&2 + exit 1 +} + +while :; do + case $1 in + -c|--connect) + ACTION=connect + shift + ;; + -d|--disconnect) + ACTION=disconnect + shift + ;; + --vpn-name) + if [[ "$2" ]]; then + VPN_NAME=$2 + shift + shift + else + die 'ERROR: "--vpn-name" requires a non-empty option argument.' + fi + ;; + --help|-h) + print_help + exit 0 + ;; + --) + shift + break + ;; + -?*) + printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2 + shift + ;; + *) + break + esac +done + +#echo "ACTION: ${ACTION}" +#echo "VPN_NAME: ${VPN_NAME}" + +[[ ${VPN_NAME} ]] || \ + die 'VPN Name is not specified. Plese use --vpn-name option.' + +if [[ ${ACTION} == "disconnect" ]]; then + disconnect ${VPN_NAME} +else + connect ${VPN_NAME} +fi +