Das hier ist noch in der Erprobungsphase
Noch implementieren
uci
bzw. /etc/config
ip link set down dev client0 ip link set up dev client0
Dieses System ist natürlich immer im Zusammenhang mit anderen Sicherungssystemen zu sehen.
Voraussetzung ist, daß im Fahrzeug eine permanente Stromversorgung sichergestellt ist.
Feststellen ob ein Fahrzeug von seinem Parkplatz bewegt wird. Dazu können Freifunkknoten verwendet werden.
Wie funktioniert das?
neighbourwatch
in /usr/lib/micron.d
, wird einmal je Minute ausgeführtneighbourwatch.lua
prüft das Alter des Links zur MAC des Fahrzeugknotens uns setzt eine Semaphor-Datei /tmp/alarmcounter
, damit wird sichergestellt, daß bei jedem verschwinden nur ein Alarm ausgelöst wirdssh alarmuser@server.ffpi ./alarm.sh
dropbearkey
Das Link-Überwachungsprogramm
#!/usr/bin/lua function file_exists(name) local f=io.open(name,"r") if f~=nil then io.close(f) return true else return false end end function watch_mac(mac) command = "batctl n | grep -i " .. mac .. " | tr -s ' ' | cut -d' ' -f4" local handle = io.popen(command) local result = handle:read("*a") handle:close() return result:match("(.-)%s*$") end counterfile = "/var/run/alarmcounter" lastseen = watch_mac("a2:1b:3a:0b:3e:72") age_seconds = tonumber(lastseen:sub(1, -2)) or 1000 if age_seconds > 30 then if not file_exists(counterfile) then file = io.open(counterfile, "w") file:write("1") file:close() command = "ssh alarmuser@srv01.ffpi ./alarmmail.sh" local handle = io.popen(command) local result = handle:read("*a") handle:close() end else if file_exists(counterfile) then os.remove(counterfile) end end
Der Cronjob der das Überwachungsscript regelmäßig aufruft
* * * * * /root/neighbourwatch.lua
Alarmierung momentan per mail
#!/bin/bash mail -s "Alarm: Fahrzeugbewegung" mustermann@example.com << EOF Alarm! Das Fahrzeug /Mein Auto/ wird gerade bewegt. EOF
Dynamische Steuerung des Client-WLANs im Fahrzeug.
Erster Entwurf:
#!/usr/bin/lua function neighbourcount() local handle = io.popen("batctl n | grep ibss0 | wc -l") local result = handle:read("*a") handle:close() return result end function ifstate() local file = io.open("/sys/class/net/client0/operstate", "r") local result = file:read("*l") file:close() return result end state = ifstate() if neighbourcount() == 0 then if state == "up" then os.execute("ip link set down dev client0") end else if state == "down" then os.execute("ip link set up dev client0") end end