mirror of
https://github.com/OpenSolo/OpenSolo.git
synced 2025-04-29 22:24:32 +02:00
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
|
|
import os
|
|
import re
|
|
|
|
|
|
dhcp_lease_file = "/var/lib/misc/dnsmasq.leases"
|
|
|
|
|
|
def get_ip_mac(ip):
|
|
"""get MAC from IP
|
|
|
|
ARP table is in /proc/net/arp:
|
|
IP address HW type Flags HW address Mask Device
|
|
10.1.1.101 0x1 0x2 e8:2a:ea:50:5f:c8 * wlan0-ap
|
|
10.1.1.100 0x1 0x2 00:02:60:02:70:28 * wlan0-ap
|
|
|
|
Returns None if IP is not in arp table.
|
|
"""
|
|
fn = "/proc/net/arp"
|
|
try:
|
|
f = open(fn)
|
|
except:
|
|
return None
|
|
for line in f:
|
|
m = re.match("([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*?(\
|
|
[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:\
|
|
[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F])", line)
|
|
if m:
|
|
if m.group(1) == ip:
|
|
return m.group(2)
|
|
return None
|
|
|
|
|
|
def clear_dhcp_lease(client_mac):
|
|
new_lease_file = dhcp_lease_file + ".new"
|
|
os.system("grep -i -v %s %s > %s" % \
|
|
(str(client_mac), dhcp_lease_file, new_lease_file))
|
|
os.rename(new_lease_file, dhcp_lease_file)
|
|
os.system("/etc/init.d/dnsmasq restart")
|