#!/bin/bash ReadToContinue() { echo "Return Taste zum fortfahren..." read } AddUser() { echo -n "Benutzername : " read username echo -n "IP Adresse : " read ip echo -n "Passwort : " read pwd export string_to_hash="${pwd}" hash="$(/opt/openvpn/sysoper/hashme.py)" echo "${hash}" > /opt/openvpn/users/${username}.pwd echo "ifconfig-push ${ip} 255.255.0.0" > /opt/openvpn/ccd/${username} echo "User ${username} wurde erzeugt" ReadToContinue } ChangePassword() { echo -n "Benutzername : " read username if [ -f /opt/openvpn/users/${username}.pwd ]; then echo -n "Passwort : " read pwd export string_to_hash="${pwd}" hash="$(/opt/openvpn/sysoper/hashme.py)" echo "${hash}" > /opt/openvpn/users/${username}.pwd ReadToContinue else echo "User ${username} existiert nicht" ReadToContinue fi } DeleteUser() { echo -n "Benutzername : " read username if [ -f /opt/openvpn/users/${username}.pwd ]; then rm /opt/openvpn/users/${username}.pwd echo "User ${username} wurde geloescht" # Das CCD-File loeschen wir auch, falls vorhanden if [ -f /opt/openvpn/ccd/${username} ]; then rm /opt/openvpn/ccd/${username} fi ReadToContinue else echo "User ${username} existiert nicht" ReadToContinue fi } ShowUser() { echo -n "Benutzername : " read username ip="" if [ -f /opt/openvpn/users/${username}.pwd ]; then if [ -f /opt/openvpn/ccd/${username} ]; then ip="$(cat /opt/openvpn/ccd/${username} |awk '{print $2}')" fi echo "User ${username} existiert und hat die IP Adresse ${ip}" echo echo "Folgendes sind die letzten 20 Logeintraege fuer diesen User:" echo if [ -f /opt/openvpn/log/${username}.log ]; then tail -20 /opt/openvpn/log/${username}.log else echo "Es existieren keine Logeintraege" fi ReadToContinue else echo "User ${username} existiert nicht" ReadToContinue fi } ListUsers() { echo echo "Username IP Adresse" echo "==================================" for userfile in $(ls -1 /opt/openvpn/users/*.pwd 2>/dev/null) ; do user="${userfile##*/}" user="${user%.pwd}" ip="N/A" if [ -f /opt/openvpn/ccd/${user} ]; then ip="$(cat /opt/openvpn/ccd/${user} |awk '{print $2}')" fi printf "%-20s %-15s\n" "$user" "$ip" done echo ReadToContinue } ShowLogfile() { echo "Hinweis: mit Taste G zum Ende des Logs gehen..., Space fuer Seitenweises vorwaertsgehen..." echo ReadToContinue /bin/less /opt/openvpn/log/logon.log } AdvancedMenu() { acharacter=0 while [ "${acharacter}" != "9" ]; do clear echo "Advanced Functions" echo "==================" echo "1 - OpenVPN Dienst stoppen" echo "2 - OpenVPN Dienst starten" echo "3 - OpenVPN Dienst Statusabfrage" echo "4 - Passwort von sysoper aendern" echo echo "9 - Zurueck zum Hauptmenu" echo echo -n "Bitte Option waehlen > " read acharacter case ${acharacter} in 1) /bin/sudo /bin/systemctl stop myopenvpn ReadToContinue ;; 2) /bin/sudo /bin/systemctl start myopenvpn ReadToContinue ;; 3) /bin/sudo /bin/systemctl status myopenvpn ReadToContinue ;; 4) /bin/passwd sysoper ;; 9) echo Zurueck... ;; *) echo "Ungueltige Option..." read esac done } character=0 while [ "${character}" != "9" ]; do clear echo "Userverwaltung OpenVPN" echo "======================" echo "1 - OpenVPN Benutzer hinzufuegen" echo "2 - OpenVPN Benutzer Passwort setzen" echo "3 - OpenVPN Benutzer entfernen" echo "4 - OpenVPN Benutzer anzeigen" echo "5 - OpenVPN Benutzer auflisten" echo echo "7 - Logfile anzeigen" echo "8 - Advanced Functions" echo echo "9 - Exit" echo echo -n "Bitte Option waehlen > " read character case ${character} in 1) AddUser ;; 2) ChangePassword ;; 3) DeleteUser ;; 4) ShowUser ;; 5) ListUsers ;; 7) ShowLogfile ;; 8) AdvancedMenu ;; 9) echo Exit... ;; *) echo "Ungueltige Option..." read esac done exit 0