1 |
#!/usr/bin/env bash |
2 |
# Douglas Thrift |
3 |
# |
4 |
# CCS Computer Science |
5 |
# |
6 |
# Login Accounting |
7 |
|
8 |
wtmp='/var/log/wtmp.0' |
9 |
|
10 |
if [[ -f "$wtmp" ]]; then |
11 |
cat="`which cat`" |
12 |
elif [[ -f "$wtmp.gz" ]]; then |
13 |
cat="`which zcat`" |
14 |
wtmp="$wtmp.gz" |
15 |
elif [[ -f "$wtmp.bz2" ]]; then |
16 |
cat="`which bzcat`" |
17 |
wtmp="$wtmp.bz2" |
18 |
else |
19 |
echo "$wtmp doesn't exist" |
20 |
exit 2 |
21 |
fi |
22 |
|
23 |
echo -e '\nDoing login accounting:' |
24 |
|
25 |
declare -a name value |
26 |
declare -i count=0 |
27 |
|
28 |
for item in $("`which ac`" -pf <("$cat" "$wtmp") | "`which sort`" -nr -k 2); do |
29 |
if [[ $((count % 2)) -eq 0 ]]; then |
30 |
name[${#name[*]}]="$item" |
31 |
else |
32 |
value[${#value[*]}]="$item" |
33 |
fi |
34 |
count="$count + 1" |
35 |
done |
36 |
|
37 |
count="$count / 2" |
38 |
|
39 |
for (( index = 0; index != count; ++index )); do |
40 |
printf '\t%-16s %8.2f\n' "${name[$index]}" "${value[$index]}" |
41 |
done |