Saya menggunakan Mac OSx untuk mengakses Pi saya melalui SSH. Untuk mengaksesnya, saya tahu bahwa saya memerlukan alamat IP Pi. Jadi, saya memutuskan untuk menggunakan beberapa perintah Python yang selalu berhasil memberi saya IP lokal.
import socket
host_name = socket.gethostname()
host_ip = socket.gethostbyname(host_name)
print host_ip
Anehnya, saya hanya mendapatkan IP host lokal (127.0.1.1).
Bisakah seseorang tolong beri tahu saya cara mendapatkan IP lokal / global yang tepat (mana yang lebih baik, ini hanya perlu bekerja melalui LAN untuk saat ini) IP untuk PI?
ssh
, untuk itu? Tentunya Anda membutuhkan alamat IP sebelum Andassh
.Jawaban:
Jika Python adalah suatu keharusan, Anda dapat memeriksa artikel ini: http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
Mereka dengan tepat menunjukkan bahwa komputer memiliki alamat IP sebanyak antarmuka jaringan.
Berikut ini adalah kode mereka untuk mendapatkan alamat IP dari adaptor jaringan, saya telah menguji kodenya dan berfungsi:
Jika RPi Anda terhubung melalui WiFi, nama adaptor seharusnya
wlan0
Kalau tidak, Anda bisa mendapatkannya dengan
ip
perintah:Anda harus mendapatkan sesuatu seperti:
Itu alamat IP Anda.
Tentu saja semua ini tidak akan berfungsi jika Anda hanya mem-boot RPi Anda dan tidak dapat terhubung karena Anda tidak tahu alamat IP! Jika demikian, server DHCP Anda pasti akan dapat memberi tahu Anda alamat IP yang ia berikan kepada RPi (atau Anda hanya mencoba semuanya :))
Yang mengatakan, Anda mungkin mendapat manfaat dari merujuk Anda RPi dengan nama dan, karena Anda menggunakan Mac, mungkin solusi terbaik adalah menginstal avahi-daemon:
yang mengimplementasikan spesifikasi Apple Zeroconf (seperti Bonjour). Anda kemudian dapat ssh ke RPi Anda dengan nama:
Saya menggunakan pendekatan yang berbeda untuk dua Raspberry saya (bernama ygdrasill dan dvalinn ): Saya telah memilih IP tetap (192.168.0.140 dan 192.168.0.142) sehingga saya juga dapat menggunakan file etc / hosts di beberapa komputer saya yang lain.
Saya bisa mengatur DNS internal atau mengandalkan Win, tetapi solusi saat ini bekerja untuk saya.
sumber
ssh [email protected]
diberi nama host default untuk RPiraspberrypi
. Mengapa avahi-daemon tidak diinstal secara universal di dunia Debian adalah di luar jangkauan saya. Jaringan ad-hoc adalah mimpi ketika berhasil di luar kotak.Kode ini:
hanya bekerja di bawah python 2.7, itu tidak berfungsi dengan python 3, Anda akan mendapatkan kesalahan bahwa argumen untuk 's' harus berupa objek byte ...
sumber
python3
?socket dapat mengembalikan localhost, tergantung pada bagaimana OS diatur. Jadi tidak portabel.
Jawaban stackoverflow ini tentang mendapatkan IP melalui python sangat membantu - ini menjelaskan masalah dengan / etc / hosts dan memberikan solusi yang layak. Ini tidak sempurna (ipv6), dan jika Anda memiliki beberapa IP terikat mungkin tidak menemukan versi routable, tetapi untuk kebutuhan Anda itu adalah oneliner yang bagus.
Dari baris perintah,
ifconfig
adalah teman Anda. Biasanya akan mencantumkan semua antarmuka terikat Anda dan semacamnya.sumber