Erkennen, wann das Gerät sich mit dem drahtlosen Netzwerk verbindet (Flughafenrouter)

1077
Tal

Ich wiederhole diese Frage mit einer klareren Beschreibung, da die andere geschlossen wurde. Nicht sicher, ob es einen anderen Weg gibt oder nicht.

Gibt es eine Möglichkeit zu erkennen, wann ein Gerät über das (Mac) -Terminal in mein Netzwerk eintritt. Ich möchte bestimmte Aktionen auslösen, wenn ich nach Hause komme und hoffte, sie verwenden zu können, wenn mein Telefon eine WLAN-Verbindung als Auslöser herstellt.

Ich merke, dass es sich zu Hause verbinden / trennen wird, also würde ich mit dem Herausfiltern der Software herumspielen, aber im Moment gibt es eine Möglichkeit, zu erkennen, welche Geräte eingeschaltet sind.

Es macht mir nichts aus, nur nach MAC-Adressen zu suchen. Möchte das Telefon für die Lösung lieber nicht jailbreaken.

Ich habe eine Zeitkapsel (im Wesentlichen ein Flughafen-Extrem) als Router.

0
Wenn ein Computer immer eingeschaltet ist, kann er feststellen, dass ein anderes Gerät das Netzwerk durchsucht und eine MAC-Adresse prüft. Ich habe ein PHP-Shell-Skript, das genau dies tut. Ich verwende es umgekehrt, um zu scannen, wenn kein Gerät vorhanden ist, um festzustellen, ob die Verbindung unterbrochen ist. Haben Sie einen Mac- oder Linux-Computer, der verfügbar ist? FrancescoMM vor 6 Jahren 0

4 Antworten auf die Frage

0
davidgo

Doing this is likely to be extremely hard, if its possible at all. It may make more sense to look at some kind of "work around", depending on your hardware, requirements and skillset.

One thought would be to ensure that your phones WIFI connection is always assigned a specific IP address (either static addressing or getting the Wifi router to dynamically assign a static IP) and then run a periodic script (Cronjob on your MAC ?) which pings your cellphone and looks for a response [or the addition of its MAC address to your arp cache if it does not respond ]. This is probably the easiest solution.

Speculating [ I do not own Apple Products and have never played with Radius Authentication for WIFI devices ], an alternative may be to upgrade/reconfigure your router to do Radius Authentication for your WIFI connection, run the Radius server on your Mac and have it trigger the script you want to run when it connects.

Es scheint, als würde jede Lösung den Router ändern müssen, vielleicht hat der Mac seine Pflicht. Tal vor 11 Jahren 0
0
Brad Patton

The only option I can think of would be an app on the iPhone that knew when it was at home. iOS 4 added background location services with shape-based regions (sometimes also referred to as geo-fences. The app could be configured to call out to your server to trigger your desired behavior.

Of course this app would have to be written and then either approved by Apple or run in testing mode on your phone.

Ich wohne in einer Stadt und Geoloc kann für meine Zwecke nicht genau genug werden. :( Tal vor 11 Jahren 0
0
JohnnyVegas

Mit der Windows-Version von Airport Utility können Sie die Systemprotokolle aktivieren. Ich bin mir sicher, dass es ein Dienstprogramm zur Systemprotokollierung gibt, das Aktionen ausführt, wenn bestimmte Protokolle übertragen werden. Legen Sie bei der Anmeldung des Computers eine dem Systemprotokoll entsprechende Aktion fest.

0
FrancescoMM

Ich verwende ein ähnliches PHP-Shell-Skript, das vom Terminal aus gestartet wurde, um zu testen, ob ein oder mehrere Geräte außer Betrieb sind. Ich verwende es, um zu überwachen, ob eine WLAN-Brücke ausgefallen ist (wenn die MAC-Adresse von Geräten auf der anderen Seite der Brücke nicht angezeigt wird, nehmen Sie an, dass die Verbindung unterbrochen wurde):

#!/usr/bin/php <?php $MULTICAST_ADDR='192.168.99.255'; $DEVICES_TO_TEST_FOR_BRIDGE=array( // list of MACs 'XX:XX:63:f2:XX:XX', 'XX:XX:d0:ad:XX:XX', 'XX:XX:b9:eb:XX:XX' ); $SLEEP=10000000; // one sec = 1000000, sleep before reconnect   while(TRUE) { usleep($SLEEP);  flush();  `ping -b -c 3 -t 3 $MULTICAST_ADDR 2> /dev/null`;  flush();  $res=`arp -an`;  $bridgeIsOn=FALSE; echo("DEVICES:\n"); echo($res); echo("\n");  foreach($DEVICES_TO_TEST_FOR_BRIDGE as $deviceToTestForBridge) { if (strpos($res, $deviceToTestForBridge) !== false) { $bridgeIsOn=TRUE; $lastBridgeOn=time(); } }  if(!$bridgeIsOn && (time()-$lastBridgeOn>5*60) ) { // If bridge is down for 5 minutes echo(" BRIDGE HAS BEEN OFF FOR LONG (".(time()-$lastBridgeOn)."s) - REQUESTING A RESTART\n");  // Do something here } } 

Wie es ist, in einem Terminal zu tippen

 ping -b -c 3 -t 3 192.168.99.255 2> /dev/null 

Meine Geräte liegen im Bereich 192.168.99.xxx, .255 bedeutet "alle". Also ping sie alle und ignoriere die Antworten.

Und dann die arp-Tabellen mit Befehl lesen

 arp -an 

Der Rest des Codes besteht darin, die Liste mit den gewünschten Geräten zu vergleichen. Am Ende der Schleife ist $ bridgeIsOn entweder WAHR oder FALSCH, und $ lastBridgeOn hat die Zeit, zu der es zuletzt gesehen wurde, sodass ich Entscheidungen treffen und Dinge ausführen kann. In Ihrem Fall müssen Sie die Logik umkehren. Mit $ bridgeIsOn ist Ihr Telefon im Netzwerk:if($bridgeIsOn) { /* do something */}

Ich speichere das Skript als "Monitorbridge", mache es ausführbar und starte es in einem Terminal

 ./monitorbridge 

Das Skript bleibt so lange aktiv, bis ich das Terminal schließe oder ^ C eingebe. Sie können es natürlich beim Login oder beim Booten starten.

Dies läuft auf einem Linux-Mini-PC, sollte aber auf allen Maschinen, auf denen PHP installiert ist und die Ping- und Arp-Befehle akzeptiert, im Wesentlichen gleich sein. Um es zu starten, würde man es unter Windows mit "php monitorbridge" anstelle von ". / monitorbridge" aufrufen, aber im Grunde sollte es genauso funktionieren. Auf Macs sollte es funktionieren, sofern PHP aktiviert ist. Die Syntax der Ping- und Arp-Befehle kann angepasst werden FrancescoMM vor 6 Jahren 0