GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Holen Sie sich den Standort der Stadt von IP-Adressen in einer Datei

Mit einem while read Schleife:

while read -r ip; do curl --fail "ipinfo.io/${ip}/city" || break; done<ip_list.txt

Dadurch wird die ip_list.txt durchgelesen Datei und setzen Sie jede Zeile auf den ip Loop-Variable, dann curl.

Basierend auf Stéphanes Vorschlag habe ich die --fail hinzugefügt Flag zu curl, damit es bei einem Serverfehler und dem || break stillschweigend fehlschlägt damit es aus der Schleife ausbricht. ipinfo.io erlaubt 50.000 API-Anfragen pro Monat für kostenlose Konten, je nachdem, wie viele IPs Sie haben und wie oft Sie diese verwenden möchten, kann dies ein Problem für Sie sein.


Für die Suche nach geografischen IP-Adressen bevorzuge ich normalerweise die Verwendung der geoIP-Datenbank von MaxMind. Es ist schneller, da es keine Internetverbindung für jede IP-Adresse benötigt, da es eine lokale Datenbank verwendet, und es gibt keine Beschränkungen für die Anzahl der Anrufe.

Wenn in Debian, als Voraussetzung, installieren Sie die Pakete:

sudo apt-get install geoip-bin geoip-database-extra

Führen Sie dann das Skript aus:

 while read -r ip; do geoiplookup $ip | awk -F, ' /City/  { print $5 } ' \
 ; done < ip_list.txt > cities.txt

Linux
  1. Unfähig, den richtigen Exit-Code aus einem Skript zu erhalten?

  2. Lesen von Zeilen aus einer Datei mit Bash:Für Vs. Während?

  3. Wie liest man eine Variable aus einer Datei?

  4. Wie bekomme ich den Pfad zur aktuellen Datei (pwd) in Linux von C?

  5. Holen Sie sich eine bestimmte Zeile aus einer Textdatei, indem Sie nur ein Shell-Skript verwenden

Bash-Scripting:So lesen Sie Daten aus Textdateien

So extrahieren Sie E-Mail-Adressen aus einer Textdatei unter Linux

So erhalten Sie den Dateinamen aus dem vollständigen Pfad in Linux

Wie bringe ich sed dazu, von der Standardeingabe zu lesen?

Nicht blockierender Get-Charakter

Wie kann ich die Länge einer Videodatei von der Konsole abrufen?