Prima di tutto, hai bisogno di homebrew installato sul tuo sistema. Se non lo hai fatto, visita link per le istruzioni, o fammi sapere e cercherò di guidarti.
Quindi devi installare arp-scan
. Per farlo, apri un Terminale e digita brew install arp-scan
.
Il prossimo passo. Salva il seguente script, ho chiamato check-iphone-available.scpt
, ma puoi rinominarlo se lo desideri.
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
Sostituisci your-username
, your-password
e your-iphone-mac
.
-
your-username
deve essere un utente amministratore che può sudo sul tuo computer.
-
your-password
password per quell'utente.
-
your-iphone-mac
può essere ottenuto sul tuo iphone, vai a Settings
- > General
- > About
e copia Wi-Fi Address
.
Assegna le autorizzazioni: chmod 775 check-iphone-available.scpt
.
Lo script esegue come amministratore il comando arp-scan
. Questo comando invia pacchetti ARP agli host sulla rete locale e visualizza tutte le risposte ricevute. Il comando grep
cerca il tuo iphone nella risposta ricevuta da arp-scan
. Se l'iphone viene trovato, restituisce 1, altrimenti restituisce 0. In 1, lo script fa clic sulla voce di menu Disponibile in Messaggi, su 0, lo stesso su Fuori (può essere modificato da Offline
, On the phone
, ecc. ).
Quindi, facciamolo automaticamente.
Vai alla cartella /Users/your-username/Library/LaunchAgents
e salva lì il seguente file plist. L'ho chiamato com.username.checkiphone.plist
, ma di nuovo, sentiti libero di 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>
Il file è piuttosto auto-esplicativo. Lanceremo il comando /usr/bin/osascript /Users/your-username/bin/check-iphone-available.scpt
ogni 60 secondi, sarà lanciato al caricamento, salverà gli errori su /tmp/com.username.checkiphone-available.err
e accederà a /tmp/com.username.checkiphone-available.out
.
Ancora una volta, sostituisci your-username
in modo appropriato.
Ultimo passo, dì al launchd delemon Mac di caricarlo.
launchctl load com.your-username.checkiphone.plist
Per interrompere lo script, basta sostituire la parola load
con unload
nella frase precedente. Al riavvio del computer, lo script verrà caricato nuovamente. Per impedirlo, spostalo in un'altra cartella.