Como o meu administrador de sistema sabe que não reiniciei meu sistema?

35

Recebi um email do administrador do meu sistema dizendo que precisava reiniciar o sistema para aplicar alguns patches. Eu tinha esquecido disso e depois de algumas horas recebi outro e-mail dizendo que eu ainda estava para reiniciar o sistema.

Desde então, reiniciei meu sistema, mas estou surpreso de saber como eles saberiam se eu tivesse reinicializado minha máquina ou não. Alguém pode explicar como isso funciona?

    
por nikhil 21.01.2013 / 07:52

8 respostas

43

Uma maneira rápida de verificar isso remotamente pode ser feita usando SNMP (desde que seu O SysAdmin configurou isso na sua rede):

admin@yourcompany:~$ snmpwalk -v 2c -c <snmpstring> MachineName sysUpTimeInstance
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9461615) 1 day, 2:16:56.15

Provavelmente, os dados seriam pesquisados e armazenados em um sistema de gerenciamento / monitoramento de rede de algum tipo (por exemplo, Nagios ou Cacti).

Caso alguém esteja interessado em brincar com o comando snmpwalk , veja a resposta aqui para obter uma configuração básica de SNMP no seu sistema.

    
por Kevin Bowen 21.01.2013 / 09:24
28

Um método simples será verificar a saída do comando uptime , que mostra há quanto tempo você está executando o sistema sem um desligamento / reinício.

Exemplo de saída:

saji@geeklap:~$ uptime
12:41:29 up  3:08,  2 users,  load average: 1.06, 0.85, 0.86

Ele diz que meu sistema foi ligado por 3 horas e 8 minutos.

O administrador pode configurar um script de shell para usar o uptime ou usar outro método, conforme detalhado neste link . Outro método que o administrador pode utilizar é configurar um email para ser enviado no desligamento do sistema ou reiniciar, os detalhes estão disponíveis neste link .

    
por saji89 21.01.2013 / 08:14
9

@ saji89 mencionou o comando uptime . Eu vou um passo abaixo, e simplesmente postular que o administrador do sistema tem um script em algum lugar que se conecta a cada computador e faz um cat /proc/uptime (ou algo equivalente). O primeiro campo da saída é o tempo, em segundos, desde que o sistema foi reinicializado pela última vez, o que é muito mais fácil de analisar do que a saída de uptime . Por exemplo, meu computador fornece um primeiro campo de tempo de atividade de 1441218.24 com uptime returning up 16 days, 16:20 . 1441218 segundos é 16 dias mais 58818 segundos e 58818 segundos é 16 1/3 horas. 16 dias 16 1/3 horas.

Quando você sabe que o tempo máximo desde que o sistema deve foi reinicializado, esses dados tornam trivial verificar se o sistema foi reinicializado desde então ou não.

Isso pode ser feito através de uma ferramenta de monitoramento como o Nagios, ou através de um script separado que o administrador de sistemas mantém em seu computador (ou melhor, acessível através dele, eu imagino) que se conecta a cada computador imprime a hora desde a última reinicialização em algum formato. Isso tudo depende de quão elaborado para fazer isso.

    
por Michael Kjörling 21.01.2013 / 10:24
8

Outra maneira, apenas para completar, é olhar para /var/log/wtmp através do comando último . Exemplo:

$ last reboot
reboot   system boot  3.2.0-36-generic Thu Jan 24 16:25 - 17:42 (1+01:17)   

wtmp begins Tue Jan  1 06:30:03 2013

Este método é um dos favoritos porque também é o mnemônico perfeito.

Q: When did the last reboot occur? 
A: Just type 'last reboot'
    
por arielf 26.01.2013 / 02:45
7

Quando um pacote que requer uma reinicialização foi atualizado via apt , um arquivo chamado reboot-required é criado em /var/run/ . O sysadmin pode verificar a presença deste arquivo remotamente para determinar se uma reinicialização é necessária devido a atualizações.

    
por onik 21.01.2013 / 15:21
2

Isso ...

  

para aplicar alguns patches

é a parte principal.

Se o admin for bom, ele provavelmente configurará as atualizações da máquina HIS para que os PCs não precisem baixar o mesmo arquivo da web. Se assim for, ele pode ver a partir de sua própria máquina que baixou os patches.

Ele só precisa analisar os endereços IP dos sistemas que carregaram os patches e enviar e enviar por e-mail para aqueles que não o fizeram. Esse email pode até ser um email gerado automaticamente. Imagine que existem 500 máquinas. Controlar manualmente cada um deles é uma perda de tempo, se houver vários métodos em que ele possa fazer a partir de seu próprio tempo.

1 razão muito importante para fazer isso da seguinte maneira: um administrador precisa ter controle sobre o que está acontecendo nos sistemas que ele precisa manter. Então ele deve sempre ter um único ponto de controle (ou seja, sua própria máquina onde ele tem todas as ferramentas), onde ele pode ver o status de qualquer máquina.

    
por Rinzwind 21.01.2013 / 09:13
2

Existem vários métodos válidos descritos nas respostas. Fazer o login e verificar o tempo de atividade seria estranho para uma grande empresa, mas viável para uma empresa menor. O sysadmin poderia estar verificando via SNMP, mas o mesmo argumento "trouble" poderia ser usado lá.

As situações mais prováveis são, no que me diz respeito:

  1. O sysadmin executa algum tipo de software de verificação, provavelmente o Nagios, que verifica problemas de clusters de computadores. Algo como o plugin NRPE será usado para a maioria dos sistemas e pode mostrar seu tempo de atividade (além do disco, usuários logados, etc.).
  2. Um método semelhante pode ser usado para verificar o que está sendo executado. Se os-to-be-updated-patches puderem ser verificados (o kernel que você está usando), o script "são todos os usuários atualizados" ainda estará apontando para o seu computador por estar em um estado 'ruim'.
por Nanne 21.01.2013 / 09:56
1

Se o sistema estiver conectado a uma rede que ele controla, o administrador do sistema pode simplesmente consultar o comutador ou o servidor dhcp para ver por quanto tempo sua conexão de rede está ativa. Isso também dirá a ele que você não reinicializou.

    
por Dennis Kaarsemaker 09.02.2013 / 13:19

Tags