5 votes

bash - Comment puis-je vérifier si un ordinateur existe sur mon réseau SANS IP (c'est-à-dire uniquement par nom de périphérique) ?

Je voudrais que mon téléphone exécute certains scripts shell via Tasker si mon téléphone se trouve sur le même réseau wifi que mon ordinateur portable. Mon idée initiale est de modifier le fichier /etc/hosts mais cela ne fonctionnerait pas car aucun des deux appareils n'est contraint d'être sur un seul réseau wifi.

Une idée beaucoup plus coûteuse serait de faire un ping de toutes les adresses possibles sur le réseau depuis mon téléphone, puis d'essayer d'envoyer une commande via ssh (disons, echo $ANDROID ) et écoutez la réponse.

La meilleure façon de le faire est de pouvoir simplement voir si un périphérique nommé "myLaptop" existe sur le réseau (ou, en fait, je pourrais utiliser l'adresse MAC aussi.) mais je n'ai aucune idée si cela est possible dans bash. Est-ce possible ?

(Je suis également ouvert aux implémentations en Perl, puisque je peux utiliser SL4A pour implémenter des scripts Perl).

3voto

Neal Points 316

Un service DNS dynamique fonctionnerait. Faites en sorte que votre ordinateur portable mette à jour votre domaine dynamique avec son IP locale, et ensuite, à chaque fois que votre téléphone se connecte à un nouveau réseau wifi, résolvez ce domaine, si vous obtenez un résultat, c'est que vous êtes bon ou que vous avez trouvé quelqu'un avec la même IP locale !

De la même manière, vous pourriez faire en sorte que votre ordinateur portable envoie son adresse IP à un serveur quelque part (web, email, etc.) que vous pourriez récupérer à partir d'un script sur votre téléphone.

A part la mise en place d'un serveur DNS, je ne suis pas sûr qu'il existe un moyen de résoudre les noms d'hôtes qui ne sont pas nommés dans vos configurations locales.

2voto

Thej Points 655

Si vous ne voulez pas d'une solution basée sur un serveur, votre ordinateur portable pourrait écouter le réseau pour une adresse spécifique. paquet de diffusion . Un paquet de diffusion sera réacheminé vers chaque appareil du même réseau, mais les appareils qui ne l'écoutent pas doivent l'ignorer.

2voto

Zapko Points 101

Vous pouvez utiliser avahi ( wiki ) (ou un élément similaire de Zeroconf ) pour découvrir les ordinateurs du réseau et publier la liste pour que votre téléphone puisse la recevoir.

参照 https://stackoverflow.com/questions/1233204/are-there-any-other-java-libraries-for-bonjour-zeroconf-apart-from-jmdns pour les implémentations de Java Zeroconf.

1voto

Johan Soderberg Points 976

Il existe une application appelée Network Discovery (disponible sur F-Droid, peut-être aussi sur l'Android Market) qui tente d'identifier les appareils sur le réseau auquel votre téléphone est connecté.

Comme il s'agit d'un logiciel libre, vous pouvez essayer de voir si vous pouvez le modifier ou en utiliser des parties à vos fins.

Ce n'est pas une réponse "voici un APK", mais si vous devez écrire quelque chose, c'est un bon début.

Edit : L'application est ici : http://f-droid.org/repository/browse/?fdfilter=network%20discovery&fdid=info.lamatricexiste.network&fdpage=1

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X