Мне нужно выполнить поиск whois в файле, содержащем IP-адреса, и вывести код страны и IP-адрес в новый файл. В моей команде до сих пор я нахожу IP-адреса и получаю уникальную копию, которая не соответствует разрешенным диапазонам. Затем я запускаю поиск whois, чтобы узнать, кто такие иностранные адреса. Наконец, он вытаскивает код страны. Это прекрасно работает, но я не могу заставить его показать мне IP-адрес вместе с кодом страны, поскольку он не включен в вывод whois.
Как лучше всего включить IP-адрес в вывод?
awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' myInputFile \
| sort \
| uniq \
| grep -v '66.33\|66.128\|75.102\|216.106\|66.6' \
| awk -F: '{ print "whois " $1 }' \
| bash \
| grep 'country:' \
>> myOutputFile
Я думал об использовании tee, но у меня возникли проблемы с выравниванием данных таким образом, чтобы это имело смысл. Выходной файл должен иметь как IP-адрес, так и код страны. Неважно, одиночные они или двойные.
Вот пример ввода:
27 декабря 04:03:30 smtpfive sendmail[14851]: tBRA3HAx014842: to=, delay=00:00:12, xdelay=00:00:01, mailer=esmtp, pri=1681345, relay=redcondor.itctel.com . [75.102.160.236], dsn=4.3.0, stat=Deferred: 451 Превышен лимит получателей для этого отправителя 27 декабря 04:03:30 smtpfive sendmail[14851]: tBRA3HAx014842: to=, delay=00:00:12, xdelay=00:00:01, mailer=esmtp, pri=1681345, relay=redcondor.itctel.com. [75.102.160.236], dsn=4.3.0, stat=Deferred: 451 Превышен лимит получателей для этого отправителя
Спасибо.
awk | sort | uniq | grep | awk | bash | grep
звучит немного избыточно. Может быть, вы можете предоставить образецmyInputFile
вместе с желаемым результатом, чтобы мы могли предложить лучший подход. - person fedorqui 'SO stop harming'   schedule 29.12.2015>whatever
послеdone
, чем открывать файл каждый раз, когда вы хотите запустить командуwhois
. - person Charles Duffy   schedule 29.12.2015awk
может выполнять сортировку, uniq'ing и grepping - инвертировать или иначе) - person Charles Duffy   schedule 29.12.2015awk
в целом подвержена ошибкам безопасности, посколькуawk
не имеет никаких средств, эквивалентныхprintf %q
в bash, для безопасного цитирования содержимого оболочки. Этот конкретный случай может быть безопасным, поскольку предоставляемый пользователем контент ограничен соответствием IP-адресам, но это плохая привычка. - person Charles Duffy   schedule 29.12.2015