[Dxspider-support] Top users command ?
Niels PD9Q
pd9q at packet-radio.net
Sun Mar 26 14:50:43 BST 2023
Hi,
Way back I wrote a ugly bash script. On the other hand, it works quite
nicely. The output will look something like this.
** Output Generated on 03-26-2023 15:41:23
** Log file : /spider/local_data/log/2023/03.dat
** Files size : 67M
** Lines in the log file : 1184821
** Total of inbound connects : 321
** Total users : 29
** Connected Stations over a month
=====================================================================================
Wed Mar 1 01:21:31 2023 IW1QLH-34 connected from (removed
ip-address)
Wed Mar 1 02:22:02 2023 IW1QLH-35 connected from
Wed Mar 1 03:22:32 2023 IW1QLH-32 connected from
Wed Mar 1 08:24:31 2023 IW1QLH-33 connected from
<snip>
Mon Mar 13 19:14:55 2023 EC3BH-5 connected from
Tue Mar 14 07:52:04 2023 HB9VQQ connected from
Sat Mar 18 16:27:45 2023 HB9BB connected from
Tue Mar 21 09:59:46 2023 EA3CV-1 connected from
Tue Mar 21 18:32:09 2023 EA3CV-22 connected from
Sat Mar 25 01:24:47 2023 IZ3WQE connected from
=====================================================================================
** End Connected Stations
** Last Connected Stations - Return Connects
=====================================================================================
Sun Mar 26 04:55:11 2023 YV5GRB connected from (removed
ip-address)
Sat Mar 25 17:13:39 2023 ON3SCA connected from
Sat Mar 25 11:37:45 2023 IW1QLH-35 connected from
Fri Mar 24 12:44:59 2023 PA3DRQ connected from
<snip>
Thu Mar 9 16:31:12 2023 PA5ZL connected from
Thu Mar 9 14:04:38 2023 HB9CU connected from
Sat Mar 4 00:50:58 2023 PJ7FM connected from
Fri Mar 3 06:15:20 2023 HB9BQP connected from
Thu Mar 2 12:21:30 2023 PH4E connected from
=====================================================================================
** End last Connected Stations
Nr Call Times
1 BI4MPH 5
2 EA3CV-1 1
3 EA3CV-22 1
4 EC3BH-1 2
5 EC3BH 4
6 EC3BH-5 1
7 G1DIF 1
8 G7VJA 2
9 HB9BB 7
10 HB9BQP 7
11 HB9BZA 2
12 HB9CU 4
13 HB9VQQ 7
14 IW1QLH-32 32
15 IW1QLH-33 32
16 IW1QLH-34 30
17 IW1QLH-35 27
18 IZ3WQE 1
19 LB4NH 2
20 M0YOL 37
21 ON3SCA 6
22 PA2WCB 62
23 PA3DRQ 8
24 PA5ZL 2
25 PH4E 5
26 PH9M 1
27 PJ7FM 2
28 SN5Y 1
29 YV5GRB 29
Script Runtime 327ms
Copy and past in a file you like and chmod +x (filename)
#!/bin/bash
ts=$(date +%s%N)
# Path to the log dir
path=/spider/local_data/log
# Get Month and Year.
month=$(date +%m)
year=$(date +%Y)
# Get the log file.
file="$path"/"$year"/"$month".dat
if [ -f "$file" ]; then
a="$path"/"$year"/"$month".dat
else
echo "$file does not exist. Error, check the path."
fi
# Get some info about the log file
size=$(du -sh "$path"/"$year"/"$month".dat | awk '{ print $1 }')
line=$(wc -l "$a")
# Get the connected from.
b=$(sed -n '/connected from/p' "$a")
# Remove some mess.
c=$(echo "$b" | sed -e '/\>^DXProt^\</d' -e 's/\>^DXCommand^\</ /g')
# Remove connecteds from localhost (Nobody have to see that i`m
connecting 1000 times a day) Remove sk1/sk0.
d=$(echo "$c" | sed -e '/127.0.0.1/d' -e '/SK0MMR/d' -e '/SK1MMR/d' -e
'/PD9Q/d')
# First connect from call... uniq on the second column.
e=$(echo "$d" | awk -F '[ .]' '!uniq[$2]++')
# Last connect from call sort bottom to top / uniq on the second column.
f=$(echo "$d" | sort -t: -k 1nr,1 | awk -F '[ .]' '!uniq[$2]++')
# Change the epoch time to reable text (can find any good option in bash
so perl it is).
g=$(echo "$e" | perl -pe 's/(\d+)/localtime($1)/e')
h=$(echo "$f" | perl -pe 's/(\d+)/localtime($1)/e')
# Echo to a file, need it to compare.
echo "$g" > first
echo "$h" > last
grep -vxFf first last >last.tmp && mv last.tmp last
i=$(cat first)
j=$(cat last )
# ** Count times connected
# Get only the calls
m=$(echo "$d" | awk -F' ' '{ print $2}')
#
count_total=$(echo "$m" | wc -l)
# Count the uniq calls, add the times off connection and sort
n=$(echo "$m" | awk -- '{for (i = 1; i <= NF; i++) wc[$i] +=1}; END {for
(w in wc) print w, wc[w]}' | sort)
count_call=$(echo "$n" | wc -l)
# Add line number
o=$(echo "$n" |awk -v ln=1 '{print ln++ " " $0 }')
# Add tab between numbers and words
p=$(echo "$o" | awk -v OFS='\t\t' '{ print $1, $2, $3 }')
div================================================================
div=$div$div
width=85
printf "\n** Output Generated on %(%m-%d-%Y %H:%M:%S)T\n" $(date +%s)
printf "** Log file : "$a"\n"
printf "** Files size : "$size"\n"
printf "** Lines in the log file : "$line""
printf "\n** Total of inbound connects : "$count_total""
printf "\n** Total users : "$count_call"\n"
printf "** Connected Stations over a month\n"
printf "%$width.${width}s\n" "$div"
printf "$i\n" | column -t
printf "%$width.${width}s\n" "$div"
printf "** End Connected Stations\n\n"
printf "** Last Connected Stations - Return Connects\n"
printf "%$width.${width}s\n" "$div"
printf "$j\n" | column -t
printf "%$width.${width}s\n" "$div"
printf "** End last Connected Stations\n"
header="\n%-0s %5s %11s\n"
width=38
printf "$header" "Nr" "Call" "Times"
printf "$p\n" | column -t
echo "Script Runtime $((($(date +%s%N) - $ts)/1000000))ms"
73 Niels PD9Q / PI1LAP-1
Op 26-3-2023 om 05:32 schreef Tim Tuck via Dxspider-support:
> Hi all,
>
> I want to turn on registration on my node but I'd like to pre-register
> my top users in the process to minimise any pain.
>
> The question then is... who are my top users ?
>
> I couldn't find a command to show me any form of database of who has
> connected to and used my node over the past month other than parsing
> the log files for the connected statements.
>
> So before I go do some scripting around the log files I thought I'd
> ask if anyone has done this and can share :)
>
> Of course I could be missing something obvious so I stand by for a
> face palm moment!
>
> thanks
>
> Tim
>
>
More information about the Dxspider-support
mailing list