diff --git a/README.md b/README.md index 3d9d691..36e9c46 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,18 @@ export PASS="1" ./openvpn-install.sh ``` +### Headless User Removal + +The removal of an existing user can also be fully automated. Again, the key is to provide the (string) value of the `MENU_OPTION` variable along with the remaining mandatory variables before invoking the script. + +The following Bash script removes the existing user `bar` from an OpenVPN configuration +```bash +#!/bin/bash +export MENU_OPTION="2" +export CLIENT="bar" +./openvpn-install.sh +``` + ## Features diff --git a/openvpn-install.sh b/openvpn-install.sh index 45615cd..d624db4 100755 --- a/openvpn-install.sh +++ b/openvpn-install.sh @@ -1072,16 +1072,18 @@ function revokeClient () { exit 1 fi - echo "" - echo "Select the existing client certificate you want to revoke" - tail -n +2 /etc/openvpn/easy-rsa/pki/index.txt | grep "^V" | cut -d '=' -f 2 | nl -s ') ' - if [[ "$NUMBEROFCLIENTS" = '1' ]]; then - read -rp "Select one client [1]: " CLIENTNUMBER - else - read -rp "Select one client [1-$NUMBEROFCLIENTS]: " CLIENTNUMBER - fi + until [[ "$CLIENT" =~ ^[a-zA-Z0-9_]+$ ]]; do + echo "" + echo "Select the existing client certificate you want to revoke" + tail -n +2 /etc/openvpn/easy-rsa/pki/index.txt | grep "^V" | cut -d '=' -f 2 | nl -s ') ' + if [[ "$NUMBEROFCLIENTS" = '1' ]]; then + read -rp "Select one client [1]: " CLIENTNUMBER + else + read -rp "Select one client [1-$NUMBEROFCLIENTS]: " CLIENTNUMBER + fi - CLIENT=$(tail -n +2 /etc/openvpn/easy-rsa/pki/index.txt | grep "^V" | cut -d '=' -f 2 | sed -n "$CLIENTNUMBER"p) + CLIENT=$(tail -n +2 /etc/openvpn/easy-rsa/pki/index.txt | grep "^V" | cut -d '=' -f 2 | sed -n "$CLIENTNUMBER"p) + done cd /etc/openvpn/easy-rsa/ ./easyrsa --batch revoke "$CLIENT" EASYRSA_CRL_DAYS=3650 ./easyrsa gen-crl