Ich möchte den Namen des Landes, in dem ich mich gerade befinde, in einem Bash-Skript verwenden. Ich kann die externe IP mit dem nächsten Befehl erhalten:
curl ifconfig.me
Aber wie kann ich meinen Ländernamen bekommen?
ip
internet
geolocation
Radu Rădeanu
quelle
quelle
Antworten:
Verwenden Sie einen anderen IP-Locator als ifconfig.me, der folgende Informationen enthält:
oder:
oder:
für mehr Präzision oder:
für die Koordinaten.
Das macht Annahmen über die HTML-Formatierung der Seite. Daher funktioniert es möglicherweise nicht mehr, wenn sie dieses Format in Zukunft ändern.
quelle
curl --silent https://whatismycountry.com/ grep --only-matching --perl-regexp 'Your Country is \K[^<]+'
tut es aber .Sie können etwas näher kommen, indem Sie die öffentliche whois-Datenbank abfragen. Es wird wahrscheinlich etwas schwierig sein, "zu produzieren", um jeden möglichen Fall zu behandeln, aber eine vernünftige Annäherung könnte sein:
Wo
a.b.c.d
ist die betreffende IP-Adresse?whois
wird häufig standardmäßig installiert, sodass dies einer vernünftigen Interpretation Ihres "Ich bevorzuge es, kein Paket zu installieren, um dies zu tun" entspricht: "Ich möchte keine zusätzliche Software installieren ".Um nur den Wert des
country
Felds auszudrucken und nur in Großbuchstaben zu setzen (um beispielsweise Vergleiche zu vereinfachen), können Sie Folgendes tun:quelle
whois $(curl ifconfig.me) | grep -iE ^country: | awk '{print $2}'
gibt mir was ich will; Vielen Dank!whois $(curl ifconfig.me) | awk 'tolower($1) ~ /^country:/ { print $2 }'
stattdessen eine Pipe sparen .ipinfo.io hat eine nette JSON-API für die Verwendung über die Befehlszeile:
quelle
jq
:curl -s ipinfo.io/ | jq ".country"
.Zusätzlich zu der
ipinfo.io
Erwähnung in der anderen Antwort könnten Sie auch verwendenfreegeoip.net
, die anscheinend offiziell den öffentlich verfügbaren Code / die öffentlich verfügbare Datenbank verwendet (die Sie bei Bedarf auf Ihrer eigenen Instanz ausführen können) und für die anscheinend ein höheres Limit gilt die Anzahl der Anfragen - 15.000 / Stunde gegenüber 1.000 / Tag auf ipinfo.io.quelle