Pythonが必須の場合は、この記事を確認できます。http:
//code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
彼らは、コンピュータにはネットワークインターフェイスと同じ数のIPアドレスがあることを正しく指摘しています。
ネットワークアダプターのIPアドレスを取得するコードは次のとおりです。コードをテストしましたが、機能します。
import socket
import fcntl
import struct
def get_ip_address(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15])
)[20:24])
print get_ip_address('lo')
print get_ip_address('eth0')
RPiがWiFi経由で接続されている場合、アダプター名は wlan0
それ以外の場合は、ip
次のコマンドで取得できます。
ip addr show eth0 | grep inet
あなたは次のようなものを得るはずです:
inet 192.168.0.140/24 brd ....
それがあなたのIPアドレスです。
もちろん、RPiを起動しただけでIPアドレスがわからないため接続できなかった場合、これは機能しません。その場合は、DHCPサーバーが確実にRPiに付与したIPアドレスを確実に伝えることができます(または、それらすべてを試してみます:))
そうは言っても、名前でRPiを参照することにはメリットがあるかもしれません。Macを使用しているので、おそらく最良の解決策はavahi-daemonをインストールすることです。
sudo apt-get install avahi-daemon
これは、(Bonjourのような)Apple Zeroconf仕様を実装しています。次に、名前でRPiにsshできます。
ssh pi@raspberry.local
2つのラズベリー(ygdrasillとdvalinnという名前)には異なるアプローチを使用しました。固定IP(192.168.0.140と192.168.0.142)を選択したので、他の一部のマシンでetc / hostsファイルも使用できます。
内部DNSをセットアップしたり、Winsに依存したりすることもできましたが、現在のソリューションでうまくいきます。