LoginSignup
4
2

More than 3 years have passed since last update.

月末なのでMacのSleepのログから勤怠情報を導き出そうとする

Posted at

お疲れ様です。月末ですね。皆さまにおかれましては、きっちり勤怠登録を毎日おこなっているか、そもそも勤怠登録なんてない強い会社にお勤めかと思われますが、念のため、日別でMacのSleep開始、終了を記録したログ(=おおむね、PCを開いて、閉じた時間=出退勤時間?)を出力するシェルスクリプト書いたので置いておきいます。毎日勤怠登録はするべきです。

参考:Macで蓋を空けたり閉じたりした時間をログから拾う方法
https://qiita.com/AkihiroTakamura/items/5da0c1532fc509876560

環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.5
BuildVersion:   18F203

コード

machine_activity_time
#!/bin/bash -e

IFS=$'\n'
logs=$(/usr/bin/pmset -g log | grep "Kernel Idle sleep preventers")
last_line_cnt=`echo "$logs" | /usr/bin/wc | /usr/bin/awk '{print $1}'`

cnt=0
prev_line=''
prev_log_date=''
for line in $logs;
do
    cnt=`expr $cnt + 1`
    log_date=`echo $line | cut -d ' ' -f 1`

    # 一行目
    if [ "$prev_line" = "" ];
    then
        echo $line | cut -d ' ' -f -3
        prev_log_date=$log_date
        prev_line=$line
        continue
    fi

    # 最終行
    if [ $cnt -eq $last_line_cnt ];
    then
        echo $line | cut -d ' ' -f -3
        continue
    fi

    if [ "$prev_log_date" != "$log_date" ];
    then
        echo $prev_line | cut -d ' ' -f -3
        echo $line | cut -d ' ' -f -3
    fi

    prev_log_date=$log_date
    prev_line=$line
done

実行結果

$ machine_activity_time
2019-05-21 01:37:16 +0900
2019-05-21 23:16:29 +0900
2019-05-22 00:56:57 +0900
2019-05-22 21:20:55 +0900
2019-05-23 00:05:38 +0900
2019-05-23 21:15:01 +0900
2019-05-24 09:59:55 +0900
2019-05-24 23:31:12 +0900
2019-05-25 00:35:10 +0900
2019-05-25 23:11:47 +0900
2019-05-26 01:13:30 +0900
2019-05-26 22:24:40 +0900
2019-05-27 00:22:30 +0900
2019-05-27 23:43:01 +0900

15日くらいしか残ってないし、あてになるような、ならないような感じなので、ちゃんと勤怠登録はしようと思いました。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2