Pergunta : como ler a lima de /var/adm/wtmp do HP-UX

Olá!, o
eu tenho um certificado do Perl que trabalhos muito bem em solaris 10 mas ele mostra do doesnot alguma saída quando eu a funciono em usuários do HP-UX 11… Eu preciso de saber desembalo o comando começ valores da lima do wtmp do cavalo-força?

class= > " desobstruído " do
> do " codeSnippet " do class= do
class= " lineNumbers " do
class= do
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 " do class= " do id= " codeSnippet651843 do
>”, “$FILE” ou morrer “não poderia escrever à lima: $! ”;
abrir WTMP, “/var/adm/wtmp” ou morrer “incapaz de abrir o wtmp: $! \ n”;
meu ($record, %prev);
   printf (PARA FORA “%7s %8s %-5s %-4s %-5s %s %s %s %s %s %s %s %-s \ n”, “ANFITRIÃO”, “DATA”, “ósmio”, “USUÁRIO”, “PORTO”, “SEMANA”, “MÊS”, “DIA”, “COMEÇO”,” - “, “EXTREMIDADE”, 'DURATIO
IP de N', “");
CANO PRINCIPAL:
quando (lido (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
    meus @vals = desembalam ($template, $record);
    # põr todos os conditionals sobre esta linha para facilitar mudando os
    CANO PRINCIPAL seguinte a menos que (>= time-86400 de $vals [0] e de $vals [7] e =~ /bsp/ de $vals [0]);
# em seguida CANO PRINCIPAL a menos que ($vals [0] e =~ /bsp/ de $vals [0]);
    se ($vals [11]) {# início de uma sessão
        se (o =~ m de $vals [2] {^ftp} e existe $prev {$vals [0]} {$vals [2]}) {
            # é ftp e já existe assim que é realmente uma saída
            meu @stm = (localtime $prev {$vals [0]} {$vals [2]} [7]) [6.4.3.2.1];
# $stm [0] = (qw (Sun segunda-feira Tue Wed o Fri Sat))[$stm [0]];
# $stm [1] = (qw (janeiro fevereiro março abril pode junho julho agosto setembro outubro novembro dezembro))[$stm [1]];
            meu @etm = (localtime $vals [7]) [2.1];
            meu $dmin = int (($vals [7] - $prev {$vals [0]} {$vals [2]} [7]) /60); # começ o minuto
            meu $dhr = int ($dmin/60); # começ horas
            $dmin - = $dhr*60;

         printf (PARA FORA “%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]);
            supressão $prev {$vals [0]} {$vals [2]};
        } mais {
            # error-checking
            se (existe $prev {$vals [0]} {$vals [2]}) {
            # advertir que “há já uma entrada do início de uma sessão para $vals [0] em $vals [2] - over-writing”;
            }
            $prev {$vals [0]} {$vals [2]} = [@vals];
        }
    } mais {# saída/absolutamente proc presumidos
        # error-checking
        se (não existe $prev {$vals [0]} {$vals [2]}) {
# advertir que “não poderia encontrar uma entrada do início de uma sessão para $vals [0] em $vals [2] - saltando”;
            CANO PRINCIPAL seguinte;
        }
        meu @stm = (localtime $prev {$vals [0]} {$vals [2]} [7]) [6.4.3.2.1];
# $stm [0] = (qw (Sun segunda-feira Tue Wed Thu Fri Sat))[$stm [0]];
# $stm [1] = (qw (janeiro fevereiro março abril pode junho julho agosto setembro outubro novembro dezembro))[$stm [1]];
        meu @etm = (localtime $vals [7]) [2.1];
        meu $dmin = int (($vals [7] - $prev {$vals [0]} {$vals [2]} [7]) /60); # começ o minuto
        meu $dhr = int ($dmin/60); # começ horas
        $dmin - = $dhr*60;
       printf (PARA FORA “%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]);
        supressão $prev {$vals [0]} {$vals [2]};
    }
}
WTMP próximo;
class= do

Resposta : como ler a lima de /var/adm/wtmp do HP-UX

Ah.  Eu ver o problema.  Mudar a linha 8 para ser:

meu $script = basename $0;
meu $TMPFILE = “. $script.last”;

e adicionar isto após a linha 2:

usar avisos;  # não estritamente necessário mas sempre uma boa idéia
lima do uso:: Basename;
Outras soluções  
 
programming4us programming4us