Edited at

自分の端末宛にpingを送って応答の有無をCSVに記録する

More than 1 year has passed since last update.


つらみ

毎日、勤務先の滞在時刻を記録して、毎月、指定のエクセルのフォーマットで提出する必要がある。手で入力するのがつらい。


だらず

自分のサーバから自分が使用しているパソコンとスマートフォンに定期的に ping を送って応答の有無を記録する。応答の有無の情報があればその時刻を出勤・退勤時刻を記入する際のヒントに使えて嬉しい。

MACアドレスから ip n でIPアドレスを引いて ping して応答が有れば 1、無ければ 0 を追記する。

以下をサーバのから cron で1時間毎とかで実行させる。なお、細部は個々の環境に応じて修正が要る。


pings.bash

#!/bin/bash

LOG_FILE="/var/log/pings.log"

function log () {
local mac_address=$1
local tag=$2
local ip_address=`ip neigh show | grep $mac_address | cut -d ' ' -f 1`
local date=`date --iso-8601=seconds`
local record="${date},${mac_address},${ip_address},${tag}"
touch $LOG_FILE
if ! ping -c 1 $ip_address 1> /dev/null; then
echo "${record},0" >> $LOG_FILE
else
echo "${record},1" >> $LOG_FILE
fi
}

log "00:00:5E:00:53:00" "pc"
log "00:00:5E:00:53:01" "mobile"


以下のようなログが出力される。あとはこれを煮たり焼いたりして使う。


/var/log/pings.log

2018-05-05T21:45:37+09:00,00:00:5E:00:53:00,192.0.2.0,pc,1

2018-05-05T21:45:37+09:00,00:00:5E:00:53:01,192.0.2.1,mobile,1

つづく。