Como meu administrador de sistemas sabe que não reinicializei meu sistema?

35

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

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

Nikhil
fonte
10
Talvez você devesse perguntar a ele?
Marco Ceppi
1
Uau, eu nunca percebi que havia tantas maneiras. Obrigado rapazes!
Nikhil

Respostas:

43

Uma maneira rápida de verificar isso remotamente pode ser feita usando o SNMP (desde que o SysAdmin o configure 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 snmpwalkcomando, consulte a resposta aqui para obter uma configuração básica do SNMP em seu sistema.

Kevin Bowen
fonte
Agradável. Alguém aqui criou um script que parece um pouco difícil de manter e este forro parece bom: D Graças e ter uma upvote;)
Rinzwind
@Rinzwind Thanks. Aqui está outro de uma linha que eu uso às vezessudo hping3 -c 2 -p 80 --tcp-timestamp -S <IPaddress> 2>&1 | grep uptime
Kevin Bowen
Todo software regular de monitoramento pode fazer isso, no entanto, o SNMP é o mais comum e esse é um bom exemplo. +1.
precisa saber é o seguinte
28

Um método simples será verificar a saída do uptimecomando, que mostra há quanto tempo você está executando o sistema sem desligar / reiniciar.

Saída de amostra:

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

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

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

saji89
fonte
Isso pode ser feito remotamente se eles não tiverem acesso para fazer login na minha máquina?
Nikhil 21/01
1
Um administrador certamente terá acesso ao seu sistema, para fins administrativos. :)
saji89
5
improvável @ saji89 Um administrador tem coisas melhores para fazer, em seguida, verificar cada sistema localmente para uptime ...
Rinzwind
2
@Rinzwind, eu não estava dizendo que ele deveria usá-lo. Eu estava apenas apontando que ele terá acesso à máquina. Nesse caso específico, o administrador tinha motivos para verificar. :)
saji89
1
Ah ok. Mas eu tenho coisas melhores para fazer, em seguida, para verificar os sistemas de uptime;) @ saji89
Rinzwind
9

@ saji89 mencionou o uptimecomando. Vou dar um passo abaixo e simplesmente afirmo que o sysadmin possui 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 a última reinicialização do sistema, 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 1441218.24com uptimeretorno up 16 days, 16:20. 1441218 segundos são 16 dias mais 58818 segundos e 58818 segundos são 16 1/3 horas. 16 dias 16 1/3 horas.

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

Isso poderia ser feito através de uma ferramenta de monitoramento como o Nagios, ou através de um script separado que o administrador do sistema mantém em seu computador (ou melhor, acessível por ele, eu imagino) que se conecta a cada computador, por sua vez ou em paralelo, e imprime o tempo desde a última reinicialização em algum formato. Tudo depende de quão elaborado para fazê-lo.

um CVn
fonte
8

Outra maneira, apenas por uma questão de integridade, é olhar /var/log/wtmpatravés do último comando. 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

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

Q: When did the last reboot occur? 
A: Just type 'last reboot'
arielf
fonte
7

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

onik
fonte
O OP foi solicitado pelo administrador de sistemas para reiniciar o computador "para aplicar alguns patches". Pelo menos para mim, isso implica que a atualização real ocorre através de algum mecanismo durante o processo de inicialização . (Talvez um script de inicialização execute algo parecido com apt-get -y upgrade.) Portanto, não haveria reboot-requiredporque, da perspectiva do apt, uma reinicialização ainda não é necessária.
um CVn 22/01
2
Duvido que seja esse o caso, porque o usuário precisaria reiniciar duas vezes se as atualizações exigirem uma reinicialização após a instalação e se não houver atualizações que exijam uma reinicialização, o sysadmin poderia executar remotamente o mesmo script e atualizar em segundo plano . Sem saber mais, acho que houve uma atualização da imagem do kernel (ou algo que exija uma reinicialização), e o usuário teve que reiniciar para aplicar o novo kernel. Mas isso é apenas suposição.
Onik
2

Este ...

aplicar alguns patches

é a parte chave.

Se o administrador for bom, ele provavelmente configurou as atualizações da máquina HIS para que os PCs não precisem baixar o mesmo arquivo da Web. Nesse caso, ele pode ver em sua própria máquina quem baixou os patches.

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

Um motivo muito importante para fazer dessa maneira: um administrador precisa ter controle sobre o que está acontecendo nos sistemas que ele precisa manter. Portanto, 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.

Rinzwind
fonte
3
Pode ser necessário reinicializar para aplicar os patches, não há garantia de que o download ocorra apenas na reinicialização.
precisa saber é o seguinte
2

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

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

  1. O administrador de sistemas executa algum tipo de software de verificação, provavelmente o Nagios, que verifica problemas nos agrupamentos de computadores. Algo como o plug-in NRPE será usado na maioria dos sistemas e pode mostrar 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 onde. Se as correções a serem atualizadas puderem ser verificadas (qual kernel você está usando), o script "todos os usuários estão atualizados" ainda estará apontando para o seu computador por estar em um estado "ruim".
Nanne
fonte
1

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

Dennis Kaarsemaker
fonte