Primero que todo, necesitas un homebrew instalado en tu sistema. Si no lo has hecho, visita enlace para obtener instrucciones, o avísame e intentaré guiarte.
Entonces necesitas instalar arp-scan
. Para hacerlo, abre una Terminal y escribe brew install arp-scan
.
Siguiente paso. Guarde el siguiente script, llamé a check-iphone-available.scpt
, pero puede cambiar el nombre si lo desea.
set IPHONE to do shell script "if /usr/local/bin/arp-scan -l | grep your-iphone-mac; then echo 1; else echo 0; fi" user name "your-username" password "your-password" with administrator privileges
tell application "System Events"
tell process "Messages"
tell menu bar 1
tell menu bar item "Messages"
tell menu "Messages"
tell menu item "My Status"
tell menu "My Status"
if IPHONE is not equal to "0" then
click menu item "Available"
else
click menu item "Away"
end if
end tell
end tell
end tell
end tell
end tell
end tell
end tell
Reemplace your-username
, your-password
y your-iphone-mac
.
-
your-username
debe ser un usuario administrador que pueda usar sudo en su computadora.
-
your-password
contraseña para ese usuario.
-
your-iphone-mac
se puede obtener en su iPhone, vaya a Settings
- > General
- > About
y copia Wi-Fi Address
.
Dar permisos: chmod 775 check-iphone-available.scpt
.
El script ejecuta como administrador el comando arp-scan
. Este comando envía paquetes ARP a los hosts en la red local y muestra las respuestas recibidas. El comando grep
busca su iphone en la respuesta recibida por arp-scan
. Si se encuentra el iPhone, devuelva 1; de lo contrario, devuelva 0. En 1, el script hace clic en el elemento del menú Disponible en Mensajes, en 0, lo mismo en Ausente (se puede cambiar por Offline
, On the phone
, etc.) ).
Entonces, hagámoslo automáticamente.
Vaya a la carpeta /Users/your-username/Library/LaunchAgents
y guarde allí el siguiente archivo plist. Lo nombré com.username.checkiphone.plist
, pero nuevamente, siéntase libre de cambiarlo.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.your-username.checkiphone</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/osascript</string>
<string>/Users/your-username/bin/check-iphone-available.scpt</string>
</array>
<key>Nice</key>
<integer>1</integer>
<key>StartInterval</key>
<integer>60</integer>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/com.your-username.checkiphone-available.err</string>
<key>StandardOutPath</key>
<string>/tmp/com.your-username.checkiphone-available.out</string>
</dict>
</plist>
El archivo es bastante autoexplicativo. Lanzaremos el comando /usr/bin/osascript /Users/your-username/bin/check-iphone-available.scpt
cada 60 segundos, se iniciará en la carga, guardará los errores en /tmp/com.username.checkiphone-available.err
y los registros en /tmp/com.username.checkiphone-available.out
.
De nuevo, reemplaza your-username
de manera apropiada.
Último paso, dile al demonio de launchd de Mac que lo cargue.
launchctl load com.your-username.checkiphone.plist
Para detener la secuencia de comandos, simplemente reemplace la palabra load
con unload
en la oración anterior. Cuando reinicies tu computadora, el script se cargará nuevamente. Para evitarlo, muévelo a otra carpeta.