Questione : come leggere la lima di /var/adm/wtmp del HP-UX

Ciao,
ho uno scritto del Perl che impianti benissimo su Solaris 10 ma esso esposizione del doesnot qualsiasi uscita quando la faccio funzionare sugli assistenti del HP-UX 11… Devo sapere disimballo l'ordine ottenere i valori dalla lima del wtmp dell'HP?

class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
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:
># notpretty " del class= " del id= " codeSnippet651843 del
>„, “$FILE„ o morire “non potrebbe scrivere alla lima: $! „;
aprire WTMP, “/var/adm/wtmp„ o morire “incapace di aprire il wtmp: $! \ n„;
mio ($record, %prev);
   printf (FUORI “%7s %8s %-5s %-4s %-5s %s %s %s %s %s %s %s %-s \ n„, “OSPITE„, “DATA„, “OS„, “UTENTE„, “ORIFICIO„, “SETTIMANA„, “MESE„, “GIORNO„, “INIZIO„,„ - “, “ESTREMITÀ„, 'DURATIO
IP di N', “");
CONDUTTURA:
mentre (colto (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
    i miei @vals = disimballano ($template, $record);
    # mettere tutti i conditionals su questa linea per rendere cambiandoli più facile
    CONDUTTURA seguente a meno che (>= time-86400 di $vals [0] e di $vals [7] e =~ /bsp/ di $vals [0]);
# dopo CONDUTTURA a meno che ($vals [0] e =~ /bsp/ di $vals [0]);
    se ($vals [11]) {# inizio attività
        se (il =~ la m. {^ftp} di $vals [2] ed esiste $prev {$vals [0]} {$vals [2]}) {
            # è ftp e già esiste in modo da è realmente un termine attività
            il mio @stm = (localtime $prev {$vals [0]} {$vals [2]} [7]) [6.4.3.2.1];
# $stm [0] = (qw (Sun lunedì Tue Wed il Fri Sat))[$stm [0]];
# $stm [1] = (qw (gennaio febbraio marzo aprile può giugno luglio agosto settembre ottobre novembre dicembre))[$stm [1]];
            il mio @etm = (localtime $vals [7]) [2.1];
            mio $dmin = int (($vals [7] - $prev {$vals [0]} {$vals [2]} [7]) /60); # ottenere il minuto
            mio $dhr = int ($dmin/60); # ottenere le ore
            $dmin - = $dhr*60;

         printf (FUORI “%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]);
            cancellazione $prev {$vals [0]} {$vals [2]};
        } altrimenti {
            # error-checking
            se (esiste $prev {$vals [0]} {$vals [2]}) {
            # avvertire che “ci è già un'entrata di inizio attività per $vals [0] su $vals [2] - scrivendo sopra„;
            }
            $prev {$vals [0]} {$vals [2]} = [@vals];
        }
    } altrimenti {# termine attività/completamente proc assuming
        # error-checking
        se (non esiste $prev {$vals [0]} {$vals [2]}) {
# avvertire che “non potrebbe trovare un'entrata di inizio attività per $vals [0] su $vals [2] - saltando„;
            CONDUTTURA seguente;
        }
        il mio @stm = (localtime $prev {$vals [0]} {$vals [2]} [7]) [6.4.3.2.1];
# $stm [0] = (qw (Sun lunedì Tue Wed Thu Fri Sat))[$stm [0]];
# $stm [1] = (qw (gennaio febbraio marzo aprile può giugno luglio agosto settembre ottobre novembre dicembre))[$stm [1]];
        il mio @etm = (localtime $vals [7]) [2.1];
        mio $dmin = int (($vals [7] - $prev {$vals [0]} {$vals [2]} [7]) /60); # ottenere il minuto
        mio $dhr = int ($dmin/60); # ottenere le ore
        $dmin - = $dhr*60;
       printf (FUORI “%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]);
        cancellazione $prev {$vals [0]} {$vals [2]};
    }
}
WTMP vicino;
class= del

Risposta : come leggere la lima di /var/adm/wtmp del HP-UX

Ah.  Vedo il problema.  Cambiare la linea 8 per essere:

mio $script = basename $0;
mio $TMPFILE = “. $script.last„;

ed aggiungere questo dopo la linea 2:

usare gli avvertimenti;  # non rigorosamente necessario ma sempre una buona idea
lima di uso:: Basename;
Altre soluzioni  
 
programming4us programming4us