LoginSignup
7
10

More than 5 years have passed since last update.

出退勤管理ソフトを作ってみた ~その1~ 監視サーバー編

Last updated at Posted at 2018-10-13

シリーズ目次

趣旨

うちの会社は、最近手伝ってもらう従業員さんが増えまして
出退勤管理をしなければならなくなったのですが、
どうせなら「プログラミングの勉強がてら全自動の出退勤管理システムを自作しよう」
ということで、作ってみました

仕組み

全自動の出退勤管理システムの仕組みがこちら

image.png

  1. 従業員のスマホを社内サーバーと同じ wifi につなぐ
  2. 社内サーバーが 15分おきに 従業員のスマホに ping を送る
  3. ping が返ってきたら Google Apps Script に通知する
  4. 通知を受け取った Google Apps Script は、Google Spreadsheet に打刻する

4 の処理は次回解説します。今回は 1~3 の流れを説明します。

用意するもの

今回のシステムに必要なものは

  • スマホのIP アドレスを固定できる wifi 環境
  • 定期的にスクリプトを実行できるサーバー
  • google のアカウント

手順

スマホのIP アドレスを固定できる wifi 環境 の構築

従業員のスマホの MAC アドレスを確認する

まず、スマホのIP アドレスを固定にあたって各スマホを識別しなければなりませんので、
各スマホを識別のに MACアドレスを利用します。
MAC アドレスの確認方法は、この辺の記事を参考にしてください
image.png

DHCP サーバーの設定

弊社の DHCP サーバーは Aterm WG シリーズ を使っています。
image.png

これには DHCP固定割当機能が付いているので、下図のように従業員のスマホに IPアドレスを固定割当設定します。

image.png

サーバーから定期的にスマホが同じ wifi に存在しているか確認するスクリプトを実行する

弊社の ファイルサーバーは Synology Disk Station を使っています。
image.png

Synology ファイルサーバー の設定

これには、定期的に シェルスクリプト を実行できるタスクスケジューラーが付いています。
image.png

15分毎にシェルスクリプト を実行する設定にしています。
image.png

シェルスクリプト

ファイルサーバーから 以下のシェルスクリプトが 15分毎に実行されます。

〇〇.sh
#!/bin/sh

#〇〇君の端末を検知
ipaddr="192.168.1.17"

ping -c 1 $ipaddr > /dev/null 2>&1

if [ $? -eq 0 ]; then
  curl -X POST -H 'Content-Type:application/x-www-form-urlencoded' -d "value=〇〇" https://script.google.com/macros/s/AKfycbzf7fiB8QGK47r_mjey4lxb_AwRfJsMZWbm6jTx/exec

fi

ipaddr= 固定した IPアドレスで従業員毎に前の手順で割り当てたIPアドレス
ping -c 1 $ipaddr で 固定した IPアドレス 宛てに ping を一回送信します。
if [ $? -eq 0 ]; then でping に応答があった場合の処理を行います
curl -X POST 次回解説する Google Apps Script に通知しています。
-d "value=〇〇" 従業員のID
https://script.google.com/macros/s/asdfasfrabafdthsdfg/exec Google Apps Script のアドレスで、これも 次回解説します。

次回

通知を受け取った Google Apps Script が、Google Spreadsheet に打刻する部分を解説します。
Google Spreadsheet編

7
10
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
7
10