class= " lineNumbers " de
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
64 :
65 :
66 :
67 :
68 :
69 :
70 :
71 :
72 :
73 :
74 :
75 :
76 :
77 :
78 :
79 :
|
class= de
># " de l'id= " codeSnippet651843 de > », « $FILE » ou mourir « ne pourrait pas écrire au dossier : $ ! » ;
ouvrir WTMP, « /var/adm/wtmp » ou mourir « incapable d'ouvrir le wtmp : $ ! \ n » ;
mon ($record, %prev) ;
printf (DEHORS « %7s %8s %-5s %-4s %-5s %s %s %s %s %s %s %s %-s \ n », « CENTRE SERVEUR », « DATE », « OS », « UTILISATEUR », « PORT », « SEMAINE », « MOIS », « JOUR », « DÉBUT », » - « , « EXTRÉMITÉ », 'DURATIO
IP de N', « ") ;
FORCE :
tandis que (lu (WTMP, $record, $recordsize)) {
# 0 $ut_user
# 1 $ut_id
# 2 $ut_line
# 3 $ut_pid
# 4 $ut_type
# 5 $ut_e_termination
# 6 $ut_e_exit
# 7 $tv_sec
# 8 $tv_usec
# 9 $ut_session
# 10 $ut_syslen
# 11 $ut_host
mes @vals = déballent ($template, $record) ;
# mettre tous les conditionals sur cette ligne pour faciliter en les changeant
prochaine FORCE à moins que (>= time-86400 de $vals [0] et de $vals [7] et =~ /bsp/ de $vals [0]) ;
# après FORCE à moins que ($vals [0] et =~ /bsp/ de $vals [0]) ;
si ($vals [11]) {# ouverture
si (le =~ m {^ftp} de $vals [2] et existe $prev {$vals [0]} {$vals [2]}) {
# c'est ftp et existe déjà ainsi c'est vraiment une déconnexion
mon @stm = (localtime $prev {$vals [0]} {$vals [2]} [7]) [6.4.3.2.1] ;
# $stm [0] = (qw (Sun lundi Tue Wed le Fri Sat))[$stm [0]] ;
# $stm [1] = (qw (janv. fév. mars avr. peut juin juillet août sept oct. nov. décembre))[$stm [1]] ;
mon @etm = (localtime $vals [7]) [2.1] ;
mon $dmin = international (($vals [7] - $prev {$vals [0]} {$vals [2]} [7]) /60) ; # obtenir la minute
mon $dhr = international ($dmin/60) ; # obtenir les heures
$dmin - = $dhr*60 ;
printf (DEHORS « %7s, %8s, %5s, %-4s, %-5s, %s, %s, %02d, %02d : %02d, -, %02d : %02d, (%02d : %02d), %-s \ n », $HOST, $DATE, $OS, $vals [0], « ftp », @stm, @etm, $dhr, $dmin,
$prev {$vals [0]} {$vals [2]} [11]) ;
suppression $prev {$vals [0]} {$vals [2]} ;
} autrement {
# de contrôle d'erreurs
si (existe $prev {$vals [0]} {$vals [2]}) {
# avertir que « il y a déjà une entrée d'ouverture pour $vals [0] sur $vals [2] - recouvrant » ;
}
$prev {$vals [0]} {$vals [2]} = [@vals] ;
}
} autrement {# déconnexion/complètement proc arrogants
# de contrôle d'erreurs
si (pas existe $prev {$vals [0]} {$vals [2]}) {
# avertir que « ne pourrait pas trouver une entrée d'ouverture pour $vals [0] sur $vals [2] - sautant » ;
prochaine FORCE ;
}
mon @stm = (localtime $prev {$vals [0]} {$vals [2]} [7]) [6.4.3.2.1] ;
# $stm [0] = (qw (Sun lundi Tue Wed Thu Fri Sat))[$stm [0]] ;
# $stm [1] = (qw (janv. fév. mars avr. peut juin juillet août sept oct. nov. décembre))[$stm [1]] ;
mon @etm = (localtime $vals [7]) [2.1] ;
mon $dmin = international (($vals [7] - $prev {$vals [0]} {$vals [2]} [7]) /60) ; # obtenir la minute
mon $dhr = international ($dmin/60) ; # obtenir les heures
$dmin - = $dhr*60 ;
printf (DEHORS « %7s, %8s, %5s, %-4s, %-5s, %s, %s, %02d, %02d : %02d, -, %02d : %02d, (%02d : %02d), %-s \ n », $HOST, $DATE, $OS, $vals [0], $vals [2], @stm, @etm, $dhr, $dmin,
$prev {$vals [0]} {$vals [2]} [11]) ;
suppression $prev {$vals [0]} {$vals [2]} ;
}
}
WTMP étroit ;
|