Получите мою страну IP в ударе

Использовать locate

Причина - это locate использует базу данных всех существующих каталогов и файлов, это было уже создано точно так же, как Вы вообразили!
http://linux.about.com/od/commands/l/blcmdl5_locatedb.htm

В некотором наборе (и изменяемый) интервал, который делают прогоны задания, сканирует файловую систему и затем создает базу данных с ним. Затем эта база данных (locatedb), с ее соответствующими индексами locate команда идет вразрез вместо того, чтобы сканировать через Ваш жесткий диск в той точке.

Таким образом, позитивный аспект - то, что это очень быстро по сравнению со сканированием жесткого диска. Оборотная сторона - то, что определять местоположение база данных (locatedb) не 'жива', так может только использоваться для файлов, которые существовали 'с' последнего сканирования.

Обновить locatedb, теперь выполненный updatedb (или sudo updatedb при необходимости)

btw я просто работал sudo updatedb локально и потребовалось 3 1/2 секунды! У меня есть 31 000 файлов.

9
19.07.2013, 02:30
3 ответа

Используйте другой локатор IP, чем ifconfig.me, который предоставляет ту информацию как:

Не доступный больше с 09.03.2015

curl -s 'http://geoiplookup.net/geoapi.php?output=countrycode'

или:

curl -s 'http://geoiplookup.net/geoapi.php?output=country'

(см. API для деталей),

или:

curl -s http://whatismycountry.com/ |
  sed -n 's|.*,\(.*\)</h3>|\1|p'

или:

curl -s http://whatismycountry.com/ |
  sed -n 's|.*> *\(.*\)</h3>|\1|p'

для большей точности, или:

curl -s http://whatismycountry.com/ |
  sed -n 's/.*Coordinates \(.*\)<.*/\1/p'

для координат.

Это делает предположения на форматировании HTML страницы. Таким образом, это может прекратить работать, если они решают изменить тот формат в будущем.

12
27.01.2020, 20:04
  • 1
    Это - превосходная иллюстрация того, почему это - хорошая идея ожидать немного прежде, чем принять ответ. +1 от меня. –  a CVn 18.07.2013, 19:42
  • 2
    @MichaelKjörling... Я вижу, но теперь я думаю, что это не правильно, чтобы Вы изменили принятый ответ. –  Radu Rădeanu 18.07.2013, 22:00
  • 3
    @Radu, который Это хорошо - если Вы чувствуете этот ответ, более полезен, Stephane заслуживает принятия (хотя я надеюсь, что получу или сохраню / upvote от Вас :)). В целом это обычно - хорошая идея ожидать по крайней мере приблизительно 12-24 часа прежде, чем принять ответ, дать нескольким людям шанс ответить. Принятие ответа в основном говорит, что "на вопрос удовлетворительно ответили", уменьшив стимул для других добавить ответы. –  a CVn 18.07.2013, 22:06
  • 4
    Stéphane, больше не работает, но curl --silent https://whatismycountry.com/ grep --only-matching --perl-regexp 'Your Country is \K[^<]+' делает. –  Fabby 26.04.2018, 17:17

Можно получить несколько рядом с запросами общественности whois базу данных. Вероятно, будет несколько трудно к "productify" обработать каждый возможный случай, но разумное приближение могло бы быть:

$ whois a.b.c.d | grep -iE ^country:

где a.b.c.d рассматриваемый IP-адрес.

whois часто устанавливается по умолчанию, таким образом, это встречает разумную интерпретацию Ваш, "Я предпочитаю не устанавливать любой пакет для того, чтобы сделать это" чтение как, "Я не хочу устанавливать дополнительное программное обеспечение".

Распечатать только значение country поле и сила это к верхнему регистру только (для создания сравнений легче, например), можно сделать что-то как:

$ whois a.b.c.d | awk -F':[ \t]+' 'tolower($1) ~ /^country$/ { print toupper($2) }'
12
27.01.2020, 20:04
  • 1
    whois $(curl ifconfig.me) | grep -iE ^country: | awk '{print $2}' дает мне, что я хочу;спасибо! –  Radu Rădeanu 18.07.2013, 14:32
  • 2
    @Radu можно сохранить себя один канал путем выполнения whois $(curl ifconfig.me) | awk 'tolower($1) ~ /^country:/ { print $2 }' вместо этого. –  a CVn 18.07.2013, 14:39

ipinfo.io имеет хороший JSON API для использования из командной строки:

$ curl ipinfo.io
{
  "ip": "X.X.X.X",
  "hostname": "No Hostname",
  "city": "Hanoi",
  "region": "Ha Noi",
  "country": "VN",
  "loc": "21.0333,105.8500",
  "org": "AS18403 The Corporation for Financing & Promoting Technology"
}
10
27.01.2020, 20:04

Теги

Похожие вопросы