%print header('NAS ports'); % %my $now = time; % %foreach my $nas ( sort { $a->nasnum <=> $b->nasnum } qsearch( 'nas', {} ) ) { % print $nas->nasnum. ": ". $nas->nas. " ". % $nas->nasfqdn. " (". $nas->nasip. ") ". % "as of ". time2str("%c",$nas->last). % " (". &pretty_interval($now - $nas->last). " ago)
". % &table(). "Nas
Port #Global
Port #
". % "IP addressUserSinceDuration", % ; % foreach my $port ( sort { % $a->nasport <=> $b->nasport || $a->portnum <=> $b->portnum % } qsearch( 'port', { 'nasnum' => $nas->nasnum } ) ) { % my $session = $port->session; % my($user, $since, $pretty_since, $duration); % if ( ! $session ) { % $user = "(empty)"; % $since = 0; % $pretty_since = "(never)"; % $duration = ''; % } elsif ( $session->logout ) { % $user = "(empty)"; % $since = $session->logout; % } else { % my $svc_acct = $session->svc_acct; % $user = "svcnum. "\">". % $svc_acct->username. ""; % $since = $session->login; % } % $pretty_since = time2str("%c", $since) if $since; % $duration = pretty_interval( $now - $since ). " ago" % unless defined($duration); % print "". $port->nasport. "". $port->portnum. "". % $port->ip. "$user$pretty_since". % "$duration" % ; % } % print "
"; %} % %#Time::Duration?? %sub pretty_interval { % my $interval = shift; % my %howlong = ( % '604800' => 'week', % '86400' => 'day', % '3600' => 'hour', % '60' => 'minute', % '1' => 'second', % ); % % my $pretty = ""; % foreach my $key ( sort { $b <=> $a } keys %howlong ) { % my $value = int( $interval / $key ); % if ( $value ) { % if ( $value == 1 ) { % $pretty .= % ( $howlong{$key} eq 'hour' ? 'an ' : 'a ' ). $howlong{$key}. " " % } else { % $pretty .= $value. ' '. $howlong{$key}. 's '; % } % } % $interval -= $value * $key; % } % $pretty =~ /^\s*(\S.*\S)\s*$/; % $1; %} % %#print &table(), < %# # %# NAS #this hasn't been used in ages, and isn't linked from anywhere... die 'NAS browse not currently active';