Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- declare -A logins
- declare -A order
- declare -A sumtimes
- ord=1
- lname=""
- last -R | sort |
- egrep ^[a-z]+[[:space:]]+\(tty\)[0-9]+[^0-9]+[0-9]+[[:space:]]..:..[[:space:]]- > prijave.temp.bshshs
- exec < prijave.temp.bshshs
- while read line;
- do
- ms=$(echo $line | cut -d' ' -f4)
- da=$(echo $line | cut -d' ' -f5)
- if [[ $ms == "Jan" ]]; then
- mi=1
- elif [[ $ms == "Feb" ]]; then
- mi=2
- elif [[ $ms == "Mar" ]]; then
- mi=3
- elif [[ $ms == "Apr" ]]; then
- mi=4
- elif [[ $ms == "May" ]]; then
- mi=5
- elif [[ $ms == "Jun" ]]; then
- mi=6
- elif [[ $ms == "Jul" ]]; then
- mi=7
- elif [[ $ms == "Aug" ]]; then
- mi=8
- elif [[ $ms == "Sep" ]]; then
- mi=9
- elif [[ $ms == "Oct" ]]; then
- mi=10
- elif [[ $ms == "Nov" ]]; then
- mi=11
- else
- mi=12
- fi
- if [[ $1 =~ ([0-9]+)[^0-9]([0-9]+) ]]
- then
- std=$((10#${BASH_REMATCH[1]}));
- stm=$((10#${BASH_REMATCH[2]}));
- if [[ $2 =~ ([0-9]+)[^0-9]([0-9]+) ]]
- then
- end=$((10#${BASH_REMATCH[1]}));
- enm=$((10#${BASH_REMATCH[2]}));
- else
- echo "Prosim vnesite datuma v enem izmed kompatibilnih formatov: 27.4. 6.5.; 14.04. 03.01; 15/01 5/6";
- exit;
- fi
- else
- echo "Prosim vnesite datuma v enem izmed kompatibilnih formatov: 27.4. 6.5.; 14.04. 03.01; 15/01 5/6";
- exit;
- fi
- if [[ $mi -gt $enm || $mi -lt $stm ]]; then
- continue
- elif [[ ($mi -eq $enm && $da -gt $end) || ($mi -eq $stm && $da -lt $std) ]]; then
- continue
- fi
- name=$( echo $line | cut -d' ' -f1 );
- time=$( echo $line | cut -d' ' -f9 );
- if [[ $lname != $name ]]; then
- order[$ord]=$name
- (( ord++ ))
- fi
- lname=$name
- if [[ ${logins[$name]} -gt 0 ]]; then
- (( logins[$name]++ ))
- else
- logins[$name]=1
- fi
- if [[ $time =~ \((([0-9]+)\+)+([0-9]+)[^0-9]([0-9]+)\) ]]
- then
- m=$(( 10#${BASH_REMATCH[2]}*60*24 + 10#${BASH_REMATCH[3]}*60 + 10#${BASH_REMATCH[4]} ));
- else
- h=$( echo ${time:1:5} | cut -d':' -f1 );
- h=$(( h = 10#$h*60 ))
- m=$( echo ${time:1:5} | cut -d':' -f2 );
- m=$(( 10#$h + 10#$m ))
- fi
- if [[ ${sumtimes[$name]} -gt 0 ]]; then
- (( sumtimes[$name] += $m ))
- else
- sumtimes[$name]=$m
- fi
- done
- rm prijave.temp.bshshs
- (( ord-- ))
- for i in $(seq 1 $ord)
- do
- name=${order[$i]}
- m=${sumtimes[$name]}
- d=$(( $m/24/60 ))
- m=$(( $m-$d*24*60 ))
- h=$(( $m/60 ))
- m=$(( $m-$h*60 ))
- if [[ $d -eq 1 ]]; then
- days="dan"
- elif [[ $d -eq 2 ]]; then
- days="dneva"
- else
- days="dni"
- fi
- echo "$name ${logins[$name]}x $d $days $h:$m"
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement