mirror of
https://github.com/RaspAP/raspap-webgui.git
synced 2024-11-25 09:00:25 +00:00
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
import subprocess
|
|
import json
|
|
|
|
def get_active_clients_amount(interface):
|
|
arp_output = subprocess.run(['arp', '-i', interface], capture_output=True, text=True)
|
|
mac_addresses = arp_output.stdout.splitlines()
|
|
|
|
if mac_addresses:
|
|
grep_pattern = '|'.join(mac_addresses)
|
|
output = subprocess.run(['grep', '-iwE', grep_pattern, '/var/lib/misc/dnsmasq.leases'], capture_output=True, text=True)
|
|
return len(output.stdout.splitlines())
|
|
else:
|
|
return 0
|
|
|
|
def get_active_clients(interface):
|
|
arp_output = subprocess.run(['arp', '-i', interface], capture_output=True, text=True)
|
|
arp_mac_addresses = set(line.split()[2] for line in arp_output.stdout.splitlines()[1:])
|
|
|
|
dnsmasq_output = subprocess.run(['cat', '/var/lib/misc/dnsmasq.leases'], capture_output=True, text=True)
|
|
active_clients = []
|
|
|
|
for line in dnsmasq_output.stdout.splitlines():
|
|
fields = line.split()
|
|
mac_address = fields[1]
|
|
|
|
if mac_address in arp_mac_addresses:
|
|
client_data = {
|
|
"timestamp": int(fields[0]),
|
|
"mac_address": fields[1],
|
|
"ip_address": fields[2],
|
|
"hostname": fields[3],
|
|
"client_id": fields[4],
|
|
}
|
|
active_clients.append(client_data)
|
|
|
|
json_output = json.dumps(active_clients, indent=2)
|
|
return json_output
|
|
|