mirror of
https://github.com/KevinMidboe/homeChecker.git
synced 2025-10-29 17:40:26 +00:00
Created the logic for saving and fetching times.
This commit is contained in:
102
macLookup.py
102
macLookup.py
@@ -1,66 +1,66 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import subprocess
|
||||
from time import time, sleep
|
||||
import sqlite3
|
||||
from subprocess import check_output
|
||||
from time import time
|
||||
from re import findall
|
||||
|
||||
def getOnlineClients():
|
||||
arpOutput = subprocess.check_output("sudo arp-scan -l", shell=True)
|
||||
arpOutput = arpOutput.decode()
|
||||
|
||||
macAdr = findall('(([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2}))', arpOutput)
|
||||
|
||||
return [i[0] for i in macAdr]
|
||||
|
||||
def getAddr():
|
||||
c.execute('SELECT adr FROM clients')
|
||||
for adr in c.fetchall():
|
||||
print(adr[0])
|
||||
|
||||
return [i[0] for i in c.fetchall()]
|
||||
|
||||
def getTimes():
|
||||
conn = sqlite3.connect('home.db')
|
||||
c = conn.cursor()
|
||||
|
||||
c.execute('SELECT c.name, l.timesince FROM lastonline AS l JOIN clients AS c WHERE l.clientadr=c.adr')
|
||||
print(c.fetchall())
|
||||
|
||||
def checkNameExistance():
|
||||
c.execute('SELECT name, addr FROM macAddr')
|
||||
test = c.fetchall()
|
||||
for name, addr in test:
|
||||
print(name)
|
||||
returnList = []
|
||||
for name, time in c.fetchall():
|
||||
returnList.append({"name": name, "time": convertTime(time)})
|
||||
|
||||
# Define the users to lookup
|
||||
addr = { "elias": '38:ca:da:eb:3f:da', "kevin": '2c:33:61:aa:e6:a9', "nora": 'cc:29:f5:b8:2d:a2',
|
||||
"inge": 'ac:5f:3e:28:2a:c0', "bazzinga": 'f0:79:59:70:a4:a6' }
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
conn = sqlite3.connect('home.db')
|
||||
c = conn.cursor()
|
||||
return returnList
|
||||
|
||||
getAddr()
|
||||
getTimes()
|
||||
# checkNameExistance()
|
||||
|
||||
# def whosHome():
|
||||
# # Get the output of the command 'arp-scan -l'
|
||||
# arpOutput = subprocess.check_output("sudo arp-scan -l", shell=True).split('\n')
|
||||
# # Strip away first three lines and last 5 lines
|
||||
# arpOutput = arpOutput[2:-4]
|
||||
|
||||
# # Open file times.txt and read lines to 'logFile'
|
||||
# with open('/home/kevin/homeCheck/times.txt', 'r') as file:
|
||||
# logFile = file.readlines()
|
||||
|
||||
# i = 0
|
||||
# # Go through each element in list 'addr'
|
||||
# for mac in addr:
|
||||
# # Then iterate through each line in arpOutput
|
||||
# for line in arpOutput:
|
||||
# line_mac = str(line.split('\t')[1])
|
||||
|
||||
# # For each line we check after a matching mac addr
|
||||
# if (mac in line_mac):
|
||||
# logFile[i] = str(users[i]) + ':' + str(time()) + '\n'
|
||||
# # print mac
|
||||
# # print users[i]
|
||||
# # print str(i) + '\n'
|
||||
# # print logFile
|
||||
|
||||
# i+=1
|
||||
|
||||
# # Write changes to file
|
||||
# with open('/home/kevin/homeCheck/times.txt', 'w') as file:
|
||||
# file.writelines(logFile)
|
||||
# print logFile
|
||||
def convertTime(seconds):
|
||||
delta = time() - seconds
|
||||
if delta >= 86400:
|
||||
return str(delta//86400) + ' days'
|
||||
elif delta >= 3600:
|
||||
if delta//3600 < 10:
|
||||
parent = str(delta//3600)
|
||||
child = str((delta - (3600 * (delta//3600)))//60)
|
||||
if len(child) == 1:
|
||||
child = '0' + child
|
||||
return parent + ':' + child + ' hours'
|
||||
else:
|
||||
return str(delta//3600) + ' hours'
|
||||
elif delta >= 60:
|
||||
return str(delta//60) + ' minutes'
|
||||
else:
|
||||
return str(delta) + ' seconds'
|
||||
|
||||
|
||||
# whosHome()
|
||||
def updateTimes():
|
||||
curTime = time()
|
||||
conn = sqlite3.connect('home.db')
|
||||
c = conn.cursor()
|
||||
|
||||
online = list(set(getOnlineClients()) & set(getAddr()))
|
||||
|
||||
for adr in online:
|
||||
c.execute('UPDATE lastonline SET timesince='+ str(curTime) +' WHERE clientadr="cc:29:f5:b8:2d:a2"')
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
Reference in New Issue
Block a user