En el ordenador remoto, guarde este código AppleScript siguiente en un nuevo documento script Editor.App (script Editor.App se encuentra aquí... /Applications/Utilities/script Editor.app) como una aplicación "Stay Open". Antes de guardar este documento como aplicación, asegúrese de introducir su dirección IP externa actual y la dirección de correo electrónico en las dos primeras líneas del código.
Para resumir lo que hace el código AppleScript es simplemente... Cada 15 minutos comprueba tu dirección IP externa actual con la dirección IP que has establecido en la primera línea del código. Si esas dos direcciones IP no son las mismas, el script se adelantará y enviará un nuevo correo electrónico (a la dirección de correo electrónico que estableció en la segunda línea del código) con la nueva dirección IP externa actualizada.
Entonces, al igual que al abrir cualquier otra aplicación en el Finder, al hacer doble clic en la aplicación recién creada se ejecutará la nueva aplicación.
property ipAddress : "123.456.7.89" -- Insert Current External IP Address (Set Only Once)
property toRecipient : "whoever@gmail.com" --Email To Get IP Has Changed Messages
on idle
set theIP to do shell script "curl ifconfig.co"
if theIP is not equal to ipAddress then
tell application "Mail"
set newEmail to (make new outgoing message)
set content of newEmail to theIP
set subject of newEmail to "IP Address Has Changed"
tell newEmail
make new to recipient with properties {address:toRecipient}
send
end tell
end tell
set ipAddress to theIP
end if
return (15 * minutes) -- Waits 15 min. to check IP again
end idle
No olvides añadir esta nueva aplicación AppleScript, en las Preferencias del Sistema, a la lista de aplicaciones que pueden controlar tu ordenador.
ACTUALIZACIÓN
Aunque el anterior script parece funcionar, después de varias ejecuciones y pequeños cambios en el código para probarlo, he decidido crear una solución alternativa. Debido a la nueva configuración de seguridad en MacOS Mojave y a la incapacidad de AppleScript para actualizar y mantener de forma fiable sus valores de propiedades globales y persistentes en todas las ejecuciones, creo que esta solución alternativa es mucho más fiable.
Paso 1: En el ordenador remoto, en script Editor.app, guarde este código AppleScript como un archivo .scpt y nómbrelo "Get Current External IP.scpt"
Asegúrese de cambiar el valor de property toRecipient
a su dirección de correo electrónico
property ipAddress : "1.1.1.1" -- Not Necessary To Set
property toRecipient : "YourEmail@gmail.com" --Email To Get IP Has Changed Messages
set emailIsRunning to application "Mail" is running -- Checks If Mail Is Running
try
set lastLoggedIP to readFile()
set theIP to do shell script "curl ifconfig.co"
if theIP is not equal to lastLoggedIP then
sendNewEmail()
writeToTheFile()
end if
on error errMsg number errNum
if errNum is -43 then -- The Error If File For readFile() Doesn't Exist Yet
set theIP to do shell script "curl ifconfig.co"
if theIP is not equal to ipAddress then
sendNewEmail()
writeToTheFile() -- Creates The "/private/tmp/IP Logger.txt" File
end if
else
activate
display dialog "An error has occurred:" & return & errMsg & " " & errNum giving up after 10
end if
end try
delay 20 -- Allows For Completion Of Any Incoming Or Outgoing Mail Messages
if not emailIsRunning then quit application "Mail" -- Quits Mail If Wasn't Already Running
to sendNewEmail() -- Sends New Email Whenever IP Changes
set theIP to do shell script "curl ifconfig.co"
tell application "Mail"
set newEmail to (make new outgoing message)
set content of newEmail to theIP
set subject of newEmail to "IP Address Has Changed"
tell newEmail
make new to recipient with properties {address:toRecipient}
send
end tell
end tell
set ipAddress to theIP
end sendNewEmail
on readFile() -- Reads IP Logger.txt To Check For IP Changes
set theFile1 to alias "private:tmp:IP Logger.txt"
set lastLoggedIP to last item of (read theFile1 as text using delimiter linefeed)
end readFile
on writeToTheFile() -- Logs Every IP Change To File
set theIP to do shell script "curl ifconfig.co"
set theFile to "/private/tmp/IP Logger.txt"
set theText to theIP
try
set writeToFile to open for access theFile with write permission
write theText & linefeed to writeToFile as text starting at eof
close access theFile
on error errMsg number errNum
close access theFile
set writeToFile to open for access theFile with write permission
write theText & linefeed to writeToFile as text starting at eof
close access theFile
end try
end writeToTheFile
Paso 2: En el ordenador remoto, en script Editor.app, guarde este siguiente código AppleScript como un archivo de aplicación "stay open". Lo llamé "IP Changed Email Notify.app".
Si no guardaste "Get Current External IP.scpt" en tu carpeta de Documentos en el Paso 1 de arriba, entonces debes establecer su ubicación en property currentExternalIP
en el siguiente código.
property currentExternalIP : alias ((path to documents folder as text) & "Get Current External IP.scpt")
run script currentExternalIP
on idle
run script currentExternalIP
return (15 * minutes)
end idle
La primera vez que ejecute la nueva aplicación AppleScript abierta (IP Changed Email Notify.app) desde fuera de scriptEditor.app, se le presentará este diálogo...
![enter image description here]()
Simplemente haga clic en "Aceptar" y ya que todo el trabajo está siendo realizado por "Get Current External IP.scpt" no debería haber más diálogos o alertas futuras con las que lidiar.
Paso 3: (OPCIONAL) En el ordenador remoto, añade esta aplicación AppleScript recién creada (IP Changed Email Notify.app) a tus "Elementos de inicio de sesión" en el panel de Preferencias del Sistema de Usuarios y Grupos. Ahora, cada vez que el ordenador se reinicie, IP Changed Email Notify.app se ejecutará automáticamente y cada vez que la dirección IP externa de ese ordenador cambie, recibirás una notificación por correo electrónico.
2 votos
Aunque no es realmente una solución técnica, si ese Mac ha iniciado sesión en cualquier correo (Gmail, por supuesto, que yo sepa), cualquier solución de sincronización, etc., esos servicios pueden proporcionar un registro que tenga la IP más reciente de su Mac.
0 votos
¿Está la máquina conectada a los servicios de iCloud/Apple? ahora mismo ? ¿Es su cuenta?
0 votos
@Harper pues yo lo veo en verde en la lista de dispositivos de mi cuenta de apple. Pero no he podido encontrar ninguna información ip.