версия жемчуга, с комментариями.
#! /usr/bin/perl
use strict;
use Date::Parse;
use Date::Format;
my $format = '%b %d %R';
my %IP=();
# read the input file, convert date/time to a time_t timestamp,
# and store it into a hash of arrays (HoA) 'man perldsc' for details
while(<>) {
chomp;
my($month, $day, $time, $ip) = split ;
my $time_t = str2time("$month $day $time");
push @{ $IP{$ip} }, $time_t;
};
# NOTE: hashes are inherently unsorted. replace "keys %IP" below
# with an IP sort function if you need the IPs sorted - e.g.
# http://www.perlmonks.org/?node_id=37889
# print the first and last time stamp seen, converting
# back to the same time format as the input.
foreach my $key (keys %IP) {
# sort the array held in $IP{$key} just in case the input
# lines are out of order
sort @{ $IP{$key} } ;
my $first = $IP{$key}[0];
my $last = $IP{$key}[scalar @{ $IP{$key} }-1];
# print the first and last time seen
# note: if an IP was seen only once, first and last will be the same.
# easy enough to add an if or unless here if you want to exclude
# IPs where first == last.
print time2str($format,$first) . " $key\n";
print time2str($format,$last) . " $key\n\n";
}
если Вы хотите передать по каналу исходный журнал в это, а не журнал, будучи переданным по каналу в grep, awk, и sed, то вносят следующие изменения.
while(<>) {
, добавить next unless /DHCPACK/;
измените строку с split
кому:
my ($month,$day,$year,undef,undef,undef,undef,$IP) = split;
Очевидно, эти сети с веб-аутентификацией полагаются на пост-аутентификацию контроля доступа на основе MAC, поэтому вы можете просто аутентифицироваться на другом устройство при подделке MAC-адреса вашего Pi, и тогда ваш Pi должен получить доступ к сети.
Получил этот совет от http://frankiejarrett.com/how-to-connect-apple-tv-to-a-hotel-wi-fi-network/
Если у вас есть второе сетевое устройство, вы можете настроить переадресацию NAT. Подключитесь к своей «внутренней» сети с помощью мобильного телефона или ноутбука, и RPi переадресует это соединение в сеть в целом. Затем авторизуйтесь в браузере на своем ноутбуке или телефоне. Сеть видит внешний MAC-адрес вашего RPi и связывает его с аутентифицированным соединением.
Я регулярно делаю это с помощью карманного туристического маршрутизатора (старый AirPort Express) для подключения к Интернету в отеле, после чего я могу подключить свой Chromecast и другие устройства к этой сети без повторной аутентификации.
Еще проще ... Если ваше сетевое устройство USB и работает с портативным компьютером, подключите его к портативному компьютеру и войдите в сеть. Затем снова подключите его к RPi. Он должен работать несколько часов.