หากต้องการเก็บ LOGON และ LOGOFF เพิ่มไว้ที่ mysql server
- Windows ในห้องบริการคอมพิวเตอร์ ที่ได้ติดตั้ง logticker.vbs และ stopticker.vbs เอาไว้ เมื่อมีผู้ใช้ login/logout จะมี log แบบ text เก็บอยู่ใน /var/www/ticker/datalog/ แยกไดเรกทอรีเป็นปีเดือนวัน เช่น
/var/www/ticker/datalog/2020/04/15
โดยมีชื่อไฟล์ยาว ๆ แบบนี้ zone1:20200414105851:98EECB9937A0:192.168.6.151:john:.txt
ข้างในมี 1 บรรทัด
zone1:20200414105851:98EECB9937A0:192.168.6.151:john:ACER11:LOGOFF:20200414115553:3422:
สถานะ LOGON/ALIVE/LOGOFF ดังนี้ LOGON=login ALIVE=ทุก 2 นาที LOGOFF=logout หรือ shutdown
หากต้องการเก็บ LOGON และ LOGOFF เพิ่มไว้ที่ mysql server มีวิธีที่ต้องแก้ไขเพิ่มเติมเอง ดังนี้
โดยแทนที่ tickerpassword ด้วยรหัสผ่านของท่าน
[1. ที่เครื่อง mysql server]
mama@mysql_nfs:~$ mysql -u root -p Enter password: mysql> CREATE DATABASE myticker CHARACTER SET 'UTF8'; mysql> CREATE USER 'tickeruser'@'%' IDENTIFIED BY 'tickerpassword'; mysql> GRANT ALL PRIVILEGES ON myticker.* TO 'tickeruser'@'%'; mysql> FLUSH PRIVILEGES; mysql> quit Bye mama@mysql_nfs:~$ mysql -u tickeruser -p Enter password: mysql> use myticker; mysql> CREATE TABLE datalog ( `id` int auto_increment, `zonename` varchar(6) not null,
`time1` varchar(14) not null, `mac` varchar(12) not null,
`clientip` varchar(15) not null, `username` varchar(20) not null,
`compname` varchar(20) not null, `status` varchar(6) not null,
`time2` varchar(14) not null, `usetime` int, primary key (`id`) ) ENGINE=INNODB
CHARSET=utf8 COLLATE utf8_unicode_ci; Query OK, 0 rows affected (0.05 sec) mysql> show tables; +--------------------+ | Tables_in_myticker | +--------------------+ | datalog | +--------------------+
[2. ที่เครื่อง psu12-sritrang server]
เปลี่ยน myticker.php เดิม ด้วย code ข้างล่างนี้ และเปลี่ยน 192.168.6.xx เป็น IP ของ mysql server ที่จะใช้
root@psu12:/var/www/ticker# cat myticker.php
// myticker.php // updated by WIPAT 2555-02-15 text file // updated by WIBOON 2563-04-14 mysql database <?php // get value from logticker.vbs and stopticker.vbs $Var=$_GET['LOG']; // text file log record in /var/www/ticker/datalog/ exec("/bin/bash /var/www/ticker/log-ticker.sh $Var"); // mysql database log record $servername = "192.168.6.xx"; $sqlusername = "tickeruser"; $sqlpassword = "tickerpassword"; list($zonename, $time1, $mac, $clientip, $username, $compname, $status, $time2, $usetime) = explode(":", $Var); if ( $status === 'ALIVE' ) { echo 'do nothing'; } else { $sql = "INSERT INTO datalog (zonename, time1, mac, clientip, username, compname, status, time2, usetime)
VALUES ('$zonename', '$time1', '$mac', '$clientip', '$username', '$compname', '$status', '$time2', '$usetime')"; try { $conn = new PDO("mysql:host=$servername;dbname=myticker", $sqlusername, $sqlpassword); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // use exec() because no results are returned $conn->exec($sql); echo "New record created successfully"; } catch(PDOException $e) { echo $sql . "<br>" . $e->getMessage(); } $conn = null; } ?>
root@psu12:/var/www/ticker#
[3. ทดสอบ]
เปิด Windows แล้ว login จากนั้น vbscript logticker.vbs ทำงาน ส่ง LOGON และ ทุก ๆ 2 นาที ส่ง ALIVE และจำนวนวินาทีที่ใช้ (และเมื่อ user logout หรือ shutdown ก็ stopticker.vbs ทำงานส่ง LOGOFF ไปแทนคำว่า ALIVE)
ตรวจสอบดูว่ามี log ที่เครื่อง mysql server
mama@mysql_nfs:~$ mysql -u tickeruser -p
Enter password:
mysql> use myticker;
mysql> select * from datalog where id > 18;
+----+----------+----------------+--------------+---------------+----------+----------+--------+----------------+---------+
| id | zonename | time1 | mac | clientip | username | compname | status | time2 | usetime |
+----+----------+----------------+--------------+---------------+----------+----------+--------+----------------+---------+
| 19 | zone1 | 20200414105851 | 98EECB9937A0 | 192.168.6.151 | john | ACER11 | LOGON | 20200414105851 | 0 |
| 20 | zone1 | 20200414105851 | 98EECB9937A0 | 192.168.6.151 | john | ACER11 | LOGOFF | 20200414115553 | 3422 |
+----+----------+----------------+--------------+---------------+----------+----------+--------+----------------+---------+
2 rows in set (0.00 sec)
หมายเหตุ time1 และ time2 อยู่ในรูปแบบ yyyymmddhhmmss