Quelle serait la façon la plus simple de trouver, avec un script, si mon adresse IP a changé?
Informations de fond:
J'ai une connexion standard par modem câble domestique et mon FAI m'attribue une IP dynamique. Cela change de temps en temps, les durées de bail DHCP semblent irrégulières.
Fondamentalement, je fais ma propre chose DNS dynamique et je peux mettre à jour les enregistrements DNS pointant vers mon serveur domestique en un clic. La seule chose qui reste à faire est de détecter un changement d'adresse IP afin que je puisse automatiser entièrement le processus.
Maintenant, il y a plusieurs sites Web ici qui peuvent renvoyer votre adresse IP, et je pourrais utiliser un travail cron sur l' wget
une de ces pages et grep
l'adresse IP à partir de celle-ci ... Mais il semble exagéré en termes d'utilisation du processeur / de la bande passante, et ce n'est pas très BAISER.
Me manque-t-il un moyen simple et élégant de récupérer mon adresse IP publique et de vérifier si elle a changé?
Information supplémentaire: mon modem / routeur est une brique bon marché, il ne fait rien de très intéressant à cet égard. Mon serveur fonctionne avec Centos 6.
la source
Vous pouvez interroger n'importe quel site Web qui affiche votre adresse IP pour cette tâche. En utilisant checkip.dyndns.com , car il est text.only.
Exemple:
la source
J'avais cette même question aujourd'hui, et je n'étais pas satisfait des réponses que j'ai vues ici ou sur Google, j'ai donc écrit un script PowerShell pour m'envoyer une notification Slack chaque fois que mon adresse IP change .
Si vous préférez recevoir un e-mail, vous pouvez cliquer sur les liens du script pour consulter une version différente qui prend en charge les e-mails Outlook.
J'espère que cela aide quelqu'un et mérite un vote. :-)
Enregistrez le texte suivant dans un fichier .ps1. Modifiez-le selon vos besoins avec votre propre URL de webhook Slack. Sauver. Cliquez avec le bouton droit sur le fichier pour "Exécuter avec PowerShell".
Ou vous pouvez le programmer pour qu'il s'exécute quotidiennement ou cependant souvent.
Pour faire fonctionner le Planificateur de tâches:
J'ai dû exécuter PowerShell en tant qu'administrateur, puis exécuter
Get-ExecutionPolicy
, ce qui m'a alors dit que ma politique d'exécution actuelle était «restreinte».Ensuite, j'ai couru
Set-ExecutionPolicy RemoteSigned
(comme indiqué ici, mais cela me rend nerveux: https://stackoverflow.com/a/26955050/470749 ).Ensuite, à partir d'une invite de commande Windows de base, j'ai essayé d'exécuter la commande suivante à quelques reprises:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File "C:\code\IP_change_detection_notification.ps1"
(une fois pour stocker l'IP et une deuxième fois pour vérifier si elle avait changé).(Jusqu'à ce que cela fonctionne, ne vous embêtez pas à essayer d'utiliser le Planificateur de tâches.)
J'ai ensuite planifié une tâche avec
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
comme programme et-ExecutionPolicy ByPass -File C:\code\IP_change_detection_notification.ps1
comme arguments.la source
Les réponses précédentes, à l'exclusion de l'implémentation PS, ne vous disent pas réellement si l'IP a changé. (Je veux aimer PowerShell. Ryan a fait un bon travail pour identifier pourquoi je ne le fais pas: les autorisations de sécurité d'exécution sont nuisibles).
L'analyse de l'IP n'est pas nécessaire tant qu'aucune sortie supplémentaire ne change lorsque l'IP n'a pas changé. Par exemple, checkip.dyndns.com renvoie quelque chose comme l'adresse IP actuelle: ddd.ddd.ddd.ddd. Ainsi, il suffit de comparer simplement la sortie entière.
De plus, si vous utilisez curl, vous souhaiterez peut-être masquer la progression à l'aide de l'indicateur -s. Comme il est écrit sur stderr, il ne pollue pas stdout.
Voici donc un simple script .cmd, qui utilise curl pour enregistrer la sortie. Il utilise ensuite FC pour le comparer à la sortie précédente, le cas échéant. Je n'ai pas besoin de définir les options FC pour Unicode, la sensibilité à la casse, etc., car la sortie doit être une correspondance binaire, lorsque l'IP n'a pas changé. Unix a cmp au lieu de FC.
De toute évidence, CurrentIp.txt LastIp.txt peut être modifié pour convenir, par exemple le préfixe avec "% TMP% \" Ce script devrait fonctionner à partir du Planificateur de tâches, avec des modifications mineures.
la source
En réponse à OP: "Est-ce qu'il me manque un moyen simple et élégant de récupérer mon adresse IP publique et de vérifier si elle a changé?"
Une réponse très simple est de ne pas le faire. Mettez à jour périodiquement votre IP.
Cela semble inutile, mais les solutions «plus intelligentes» sont juste plus complexes et moins fiables, sans économiser le processeur, la bande passante, etc. Envoyer 1 500 octets ou moins (un paquet) une fois par heure est très bon marché. Une année entière consommera 365 * 24 * 1,500 = 13 Meg Bytes ou environ 3 minutes du Rifleman sur Netflix.
Le coût du processeur / de la bande passante pour obtenir votre adresse IP externe et publier occasionnellement votre nouvelle adresse IP est probablement plus élevé que de publier régulièrement votre adresse IP de manière redondante. Je poste mon IP sur duckdns toutes les heures depuis des années, sans problème. Évidemment, si vous commencez à faire cette 1 / seconde, votre service de domaine peut le comprendre et s'énerver. De même, tout service que vous utilisez pour rechercher votre adresse IP ne sera pas heureux si vous faites cela.
Une dernière pensée, la question que vous posez fait partie du problème que vous mentionnez. Le déclencheur de l'actualisation de votre DNS dynamique pourrait être lorsque votre nom de domaine ne se résout pas sur votre serveur. Vous pouvez utiliser ping, mais si votre ancienne adresse ip est réutilisée, le nouveau titulaire de bail ip peut bien répondre au ping.
Dans cet esprit, vous pouvez périodiquement tenter de télécharger un petit fichier signature / magique à partir de votre serveur. Vraiment, cela pourrait être n'importe quel fichier statique qui vous indique que vous avez trouvé votre serveur, même votre page Web d'accueil fonctionnerait, mais un nom inhabituel serait bien meilleur que default.html.
Si le d / l échoue, mettez à jour votre adresse IP, videz votre cache DNS et réessayez. La mise à jour peut prendre quelques minutes pour être efficace, selon votre service DNS. Cette approche supprime la dépendance à l'égard d'un autre site IP externe et teste réellement ce que vous voulez vraiment savoir: d'autres personnes peuvent-elles accéder à mon site?
la source
Comme option alternative qui pourrait vous aider, j'ai écrit un script python conçu pour surveiller les changements d'adresse IP externes. Je l'utilise sous Linux, mais comme il s'agit de python, il devrait fonctionner correctement sous Windows après avoir configuré l'environnement Python approprié. Il enregistre actuellement l'adresse IP externe "actuelle" dans un fichier et, une fois exécuté, saisit une nouvelle adresse IP, puis la compare à l'ancienne. Il est conçu pour vous envoyer un e-mail si un changement est détecté.
Il est conçu pour s'exécuter en tant que tâche cronjob (Linux) ou planifiée (Windows) et ne s'exécute pas en tant que démon d'arrière-plan seul.
Voici le lien vers le référentiel github: https://github.com/begleysm/ipwatch
J'espère que ça aide!
la source
J'utilise
curl ifconfig.me
, mais ce n'est pas quelque chose que j'ai essayé sur des plateformes autres que Debian.la source