From 4466f1503c9797808d49d8cb55063bec5a79deed Mon Sep 17 00:00:00 2001 From: Orazio Date: Tue, 3 Dec 2019 17:59:27 +0100 Subject: [PATCH] Better client stats formatting --- auto_install/install.sh | 6 +++--- scripts/openvpn/clientStat.sh | 11 +++++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/auto_install/install.sh b/auto_install/install.sh index 35a86cf..2305458 100755 --- a/auto_install/install.sh +++ b/auto_install/install.sh @@ -698,9 +698,9 @@ askWhichVPN(){ installOpenVPN(){ echo "::: Installing OpenVPN from Debian package... " - # grepcidr is used to redact IPs in the debug log, whereas expect is used - # to feed easy-rsa with passwords - PIVPN_DEPS=(openvpn grepcidr expect) + # grepcidr is used to redact IPs in the debug log, expect is used to feed easy-rsa + # with passwords, bsdmainutils provides column to format the terminal output + PIVPN_DEPS=(openvpn grepcidr expect bsdmainutils) installDependentPackages PIVPN_DEPS[@] } diff --git a/scripts/openvpn/clientStat.sh b/scripts/openvpn/clientStat.sh index 2af420f..ef04114 100755 --- a/scripts/openvpn/clientStat.sh +++ b/scripts/openvpn/clientStat.sh @@ -17,15 +17,17 @@ printf ": NOTE : The output below is NOT real-time!\n" printf ": : It may be off by a few minutes.\n" printf "\n" printf "\e[1m::: Client Status List :::\e[0m\n" -printf "\t\t\t\t\t\t\t\tBytes\t\tBytes\t\n" -printf "\e[4mName\e[0m\t\t\t\e[4mRemote IP\e[0m\t\t\e[4mVirtual IP\e[0m\t\e[4mReceived\e[0m\t\e[4mSent\e[0m\t\t\e[4mConnected Since\e[0m \n" + +{ +printf "\e[4mName\e[0m \t \e[4mRemote IP\e[0m \t \e[4mVirtual IP\e[0m \t \e[4mBytes Received\e[0m \t \e[4mBytes Sent\e[0m \t \e[4mConnected Since\e[0m\n" + if grep -q "^CLIENT_LIST" "${STATUS_LOG}"; then if [ -n "$(type -t numfmt)" ]; then while read -r line; do read -r -a array <<< $line [[ ${array[0]} = CLIENT_LIST ]] || continue - printf "%s\t\t%s\t%s\t%s\t\t%s\t\t%s %s %s - %s\n" ${array[1]} ${array[2]} ${array[3]} $(hr ${array[4]}) $(hr ${array[5]}) ${array[7]} ${array[8]} ${array[10]} ${array[9]} - done <$STATUS_LOG + printf "%s \t %s \t %s \t %s \t %s \t %s %s %s - %s\n" ${array[1]} ${array[2]} ${array[3]} $(hr ${array[4]}) $(hr ${array[5]}) ${array[7]} ${array[8]} ${array[10]} ${array[9]} + done <$STATUS_LOG else awk -F' ' -v s='CLIENT_LIST' '$1 == s {print $2"\t\t"$3"\t"$4"\t"$5"\t\t"$6"\t\t"$8" "$9" "$11" - "$10"\n"}' ${STATUS_LOG} fi @@ -33,3 +35,4 @@ else printf "\nNo Clients Connected!\n" fi printf "\n" +} | column -t -s $'\t' \ No newline at end of file