Как получить код/имя страны в результате команды tail?

Я решил это так

#!/bin/bash
for f in {100..2} ; do mv $f $((f+1)); done
x="?_1"
y=$(echo $x | cut -b 1-1)
mv $x $y

Это делается вручную, но быстрее решает исходную проблему.

0
03.01.2020, 10:01
2 ответа

Что ж, пока можно делать такие вещи с помощью оболочки, awk и так далее, но использование локальной базы данных MaxMind даст вам лучшую и более предсказуемую производительность. А использование других языков, таких как Perl или Python, даст вам более читаемый код, например, с Python :

.
import re
import fileinput
import geoip2.database

reader = geoip2.database.Reader('GeoLite2-City.mmdb')

for line in fileinput.input():
  # Extract source ip using Regexp
  src_ip_search = re.search("SRC=(\S+)", line)
  if src_ip_search is None:
    continue # Didn't find SRC record for some reason
  src_ip = src_ip_search.group(1)
  # Get ISO name of country for that ip from mmdb
  src_iso_code = reader.city(src_ip).country.iso_code
  print(re.sub("SRC=(\S+)", "SRC=\g<1>({})".format(src_iso_code), line)
1
28.01.2020, 02:38

Вы можете сделать это, например, с помощью этого скрипта:

out=$(awk '/INPUT/ {print $1,$2,$3,$11,$12}' /var/log/kern.log)
sourcec=$(whois $(echo $out|awk -F'[ =]' '{print $5}')|awk '/Country:/ {print $2}')
targetc=$(whois $(echo $out|awk -F'[ =]' '{print $7}')|awk '/Country:/ {print $2}')
0
28.01.2020, 02:38

Теги

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