Skip to content

Instantly share code, notes, and snippets.

@toonetown
Last active January 21, 2020 16:58
Show Gist options
  • Save toonetown/5d09b777cb722bffbcb74f48bc887531 to your computer and use it in GitHub Desktop.
Save toonetown/5d09b777cb722bffbcb74f48bc887531 to your computer and use it in GitHub Desktop.
Openconnect helper script
#!/bin/bash
[ -f "${OC_CONFIG:="${HOME}/.oc-config"}" ] || { echo "Not configured - set up ${OC_CONFIG}" >&2; exit 1; }
if [ "$(id -u)" != "0" ]; then OC_CONFIG="${OC_CONFIG}" sudo "${0}" "$@"; exit $?; fi
OC_PID="/var/run/openconnect.pid"
OC_LOG="/var/log/openconnect.log"
case "${1}" in
connect)
[ -f "${OC_PID}" ] && { echo "Already connected - run \`${0} disconnect\`" >&2; exit 1; }
[ -n "${2}" ] || { echo "Usage: ${0} connect <host>" >&2; exit 1; }
sed -nE 's/^# *password=(.+)$/\1/p' "${OC_CONFIG}" | \
openconnect --passwd-on-stdin --config="${OC_CONFIG}" \
--script="$(brew --prefix)/etc/vpnc-script" \
--background --pid-file="${OC_PID}" \
"${2}" >> "${OC_LOG}" 2>&1 || {
echo "Error connecting - see ${OC_LOG} for details"; exit 1
}
echo "Connected"
exit 0
;;
disconnect)
[ -f "${OC_PID}" ] || { echo "Not connected - run \`${0} connect <host>\`" >&2; exit 1; }
_PID="$(cat "${OC_PID}")"
kill "${_PID}"
while ps ax | grep -q "^ *${_PID} "; do sleep 1; done
rm -f "${OC_PID}"
echo "Disconnected"
exit 0
;;
*) echo "Usage: ${0} <connect <host> | disconnect>" >&2; exit 1 ;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment