Ich verwende Mac OSx, um über SSH auf meinen Pi zuzugreifen. Um darauf zuzugreifen, weiß ich, dass ich die IP-Adresse des Pi benötige. Deshalb habe ich mich für einige Python-Befehle entschieden, denen es immer gelungen ist, mir die lokale IP zu geben.
import socket
host_name = socket.gethostname()
host_ip = socket.gethostbyname(host_name)
print host_ip
Seltsamerweise habe ich nur die lokale Host-IP (127.0.1.1) erhalten.
Kann mir bitte jemand sagen, wie ich die richtige lokale / globale IP (je nachdem, was besser ist, dies muss vorerst nur über LAN funktionieren) für den PI erhalte?
ssh
das dabei? Sicherlich brauchen Sie die IP-Adresse vor sichssh
.Antworten:
Wenn Python ein Muss ist, können Sie diesen Artikel lesen : http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
Sie weisen zu Recht darauf hin, dass ein Computer so viele IP-Adressen wie Netzwerkschnittstellen hat.
Hier ist ihr Code, um die IP-Adresse eines Netzwerkadapters zu erhalten. Ich habe den Code getestet und er funktioniert:
Wenn Ihr RPi über WLAN verbunden ist, sollte der Adaptername lauten
wlan0
Andernfalls können Sie es mit dem
ip
Befehl erhalten:Sie sollten etwas bekommen wie:
Das ist deine IP-Adresse.
Natürlich funktioniert nichts davon, wenn Sie nur Ihr RPi starten und keine Verbindung herstellen können, weil Sie die IP-Adresse nicht kennen! Wenn dies der Fall ist, kann Ihr DHCP-Server Ihnen sicherlich mitteilen, welche IP-Adresse er gerade dem RPi gegeben hat (oder Sie probieren einfach alle aus :))
Das heißt, Sie könnten davon profitieren, wenn Sie Ihr RPi nach Namen referenzieren. Da Sie einen Mac verwenden, ist es wahrscheinlich die beste Lösung, avahi-daemon zu installieren:
Dies implementiert die Apple Zeroconf-Spezifikation (wie Bonjour). Sie können dann mit Namen zu Ihrem RPi ssh:
Ich habe für meine beiden Himbeeren ( ygdrasill und dvalinn ) einen anderen Ansatz verwendet : Ich habe mich für eine feste IP (192.168.0.140 und 192.168.0.142) entschieden, damit ich auf einigen meiner anderen Computer auch die Datei etc / hosts verwenden kann.
Ich hätte ein internes DNS einrichten oder mich auf Wins verlassen können, aber die aktuelle Lösung funktioniert für mich.
quelle
ssh [email protected]
der Standard-Hostname für ein RPi seinraspberrypi
. Warum Avahi-Daemon in der Debian-Welt nicht universell installiert ist, ist mir ein Rätsel. Ad-hoc-Netzwerke sind ein Traum, wenn sie sofort funktionieren.Dieser Code:
funktioniert nur unter Python 2.7, es funktioniert nicht mit Python 3, Sie erhalten die Fehlermeldung, dass das Argument für 's' ein Byte-Objekt sein muss ...
quelle
python3
?Der Socket gibt möglicherweise den lokalen Host zurück, je nachdem, wie das Betriebssystem eingerichtet ist. Es ist also nicht tragbar.
Diese Stackoverflow-Antwort zum Abrufen von IP über Python ist hilfreich. Sie erklärt das Problem mit / etc / hosts und bietet eine angemessene Problemumgehung. Es ist nicht perfekt (ipv6), und wenn Sie mehrere gebundene IPs haben, findet es möglicherweise nicht die routingfähige Version, aber für Ihre Anforderungen ist es ein guter Oneliner.
Von der Kommandozeile
ifconfig
ist dein Freund. In der Regel werden alle gebundenen Schnittstellen und dergleichen aufgelistet.quelle