[PYTHON] Holen Sie sich die der Netzwerkschnittstelle zugewiesene IPv4-Adresse in Code (Linux)

Das Parsen der Ausgabe der Befehle ifconfig und ip erfolgt jedoch in Birnenrichtung.

Unter Linux können Sie es mit "ioctl (SIOCGIFADDR)" erhalten.

Es ist fast das gleiche wie das ursprüngliche Skript (Referenz 1 unten). Mit Python ist es einfach, weil Sie mit der angehängten Distribution so weit schreiben können.

import sys, socket, struct
from fcntl import ioctl

SIOCGIFADDR = 0x8915

if len(sys.argv) < 2:
  print >> sys.stderr, "Usage:", sys.argv[0], "<interface name>"
  sys.exit()

interface = sys.argv[1]

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
  ifreq  = struct.pack('16s16x', interface)
  ifaddr = ioctl(s.fileno(), SIOCGIFADDR, ifreq)
finally:
  s.close()

_, sa_family, port, in_addr = struct.unpack('16sHH4s8x', ifaddr)
print socket.inet_ntoa(in_addr)

Referenz

Recommended Posts

Holen Sie sich die der Netzwerkschnittstelle zugewiesene IPv4-Adresse in Code (Linux)
Holen Sie sich eine Adresse aus einer Postleitzahl
Holen Sie sich die IP-Adresse des Kunden mit Django
Deaktivieren Sie IPv6 auf der Netzwerkschnittstelle in CentOS Linux 8
Ruft die EDINET-Codeliste in Python ab
[Linux] Ein Befehl zum Abrufen einer Liste der in der Vergangenheit ausgeführten Befehle
Codebeispiel zum Abrufen von oauth_token und oauth_token_secret der Twitter-API in Python 2.7
Loggen Sie sich mit json mit pygogo ein.
Tool zum Einfügen des Ländernamens und des Ländercodes in einen Teil der IP-Adresse
So erhalten Sie den Variablennamen selbst in Python
So ermitteln Sie die Anzahl der Stellen in Python
[Linux] [C / C ++] So ermitteln Sie den Wert der Rücksprungadresse einer Funktion und den Funktionsnamen des Aufrufers
[OCI] Python-Skript zum Abrufen der IP-Adresse einer Recheninstanz in Cloud Shell
Ein Liner, um den n-ten Commit-Hash in Git zu erhalten
Testcode, um auf der Seite nach defekten Links zu suchen
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
So erhalten Sie den Anweisungszeiger (= Programmzähler) im Linux-Kernel
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie alle Schlüssel und Werte im Wörterbuch
[Shell] So erhalten Sie den Remote-Standardzweig mit Git
So implementieren Sie Java-Code im Hintergrund von Red Hat (Linux ONE)
Erfassen Sie das Betriebsprotokoll automatisch im Terminal, wenn Sie sich bei Linux anmelden
[Linux] Ich möchte das Datum wissen, an dem sich der Benutzer angemeldet hat
So erhalten Sie alle möglichen Werte in einem regulären Ausdruck
So bringen Sie den Druckertreiber für Oki Mac in Linux
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Klicken Sie in Python auf die New Relic-API, um den Status des Servers abzurufen
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
Erstellen Sie eine Funktion, um den Inhalt der Datenbank in Go abzurufen
Programmieren, um in der Welt zu kämpfen ~ 5-1
Programmierung, um in der Welt zu kämpfen ~ 5-5,5-6
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Skriptpfad in Python
Im Python-Befehl zeigt Python auf Python3.8
So erhalten Sie die Python-Version
Befehl [linux] kill, um den Prozess abzubrechen
Weg zu Intermediate Linux: Network Edition
Holen Sie sich den Desktop-Pfad in Python
Probieren Sie Cython in kürzester Zeit aus
Zeichencode-bezogene Linux-Befehle
So führen Sie TensorFlow 1.0-Code in 2.0 aus
Programmieren, um in der Welt zu kämpfen ~ 5-2
Holen Sie sich die Abfragezeichenfolge (Abfragezeichenfolge) mit Django
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Klicken Sie auf die Selenium-Links, um die Elemente der einzelnen Seiten abzurufen
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ein Skript, das die von wercker in der Sicherheitsgruppe verwendete IP-Adresse registriert
Verwenden Sie eine Verknüpfung, um das Touchpad in Linux Mint zu aktivieren oder zu deaktivieren