Come fa il mio amministratore di sistema a sapere che non ho riavviato il mio sistema?


35

Ho ricevuto un'e-mail dall'amministratore di sistema che mi diceva che dovevo riavviare il sistema per applicare alcune patch. Me ne ero dimenticato e dopo un paio d'ore ho ricevuto un'altra mail che mi diceva che dovevo ancora riavviare il mio sistema.

Da allora ho riavviato il mio sistema, ma sono sorpreso di come avrebbero saputo se avessi riavviato la mia macchina o meno. Qualcuno può spiegare come funziona?


10
Forse dovresti semplicemente chiederglielo?
Marco Ceppi

1
Wow, non ho mai capito che ci fossero così tanti modi. Grazie ragazzi!
nikhil,

Risposte:


43

Un modo rapido per controllare questo da remoto può essere fatto usando SNMP (a condizione che SysAdmin lo abbia impostato sulla rete):

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

Molto probabilmente, i dati verrebbero sottoposti a polling e archiviati in un sistema di gestione / monitoraggio della rete di qualche tipo (ad esempio Nagios o Cacti).

Nel caso in cui qualcuno sia interessato a giocare con il snmpwalkcomando, vedere la risposta qui per ottenere una configurazione SNMP di base impostata sul proprio sistema.


Ben fatto. Qualcuno qui ha creato una sceneggiatura che sembra un po 'difficile da mantenere e questa fodera sembra carina: D Grazie e hai un voto;)
Rinzwind

@Rinzwind Grazie. Ecco un altro one-liner che uso a voltesudo hping3 -c 2 -p 80 --tcp-timestamp -S <IPaddress> 2>&1 | grep uptime
Kevin Bowen il

Ogni normale software di monitoraggio può fare questo, tuttavia SNMP è il più comune e questo è un bell'esempio. +1.
gertvdijk,

28

Un metodo semplice sarà quello di controllare l'output del uptimecomando, che mostra da quanto tempo è in esecuzione il sistema senza arresto / riavvio.

Uscita campione:

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

Dice che il mio sistema è stato acceso per 3 ore e 8 minuti.

L'amministratore può impostare uno script di shell per utilizzare uptimeo utilizzare qualche altro metodo, come dettagliato in questo collegamento . Un altro metodo che l'amministratore può utilizzare è configurare un'e-mail da inviare allo spegnimento o al riavvio del sistema, i dettagli sono disponibili a questo link .


Potrebbe essere fatto in remoto se non avessero accesso al mio computer?
nikhil,

1
Un amministratore avrà sicuramente accesso al tuo sistema, a fini amministrativi. :)
saji89,

5
improbabile @ saji89 Un amministratore ha cose migliori da fare quindi controllare ogni sistema localmente per l'uptime ...
Rinzwind

2
@Rinzwind, non stavo dicendo che avrebbe dovuto usarlo. Stavo solo sottolineando che avrà accesso alla macchina. In questo caso particolare, l'amministratore aveva motivi per verificare. :)
saji89,

1
Ah ok. Ma ho cose migliori da fare quindi per controllare i tempi di attività dei sistemi;) @ saji89
Rinzwind

9

@ saji89 ha menzionato il uptimecomando. Scenderò di un gradino più in basso e semplicemente supporrò che l'amministratore di sistema abbia uno script da qualche parte che si collega a ciascun computer e fa un cat /proc/uptime(o qualcosa di equivalente). Il primo campo dell'output è il tempo, in secondi, dall'ultimo riavvio del sistema, che è molto più facile da analizzare rispetto all'output di uptime. Ad esempio, il mio computer offre un primo campo di uptime 1441218.24con il uptimeritorno up 16 days, 16:20. 1441218 secondi è 16 giorni più 58818 secondi e 58818 secondi è 16 1/3 ore. 16 giorni 16 1/3 ore.

Quando si conosce il periodo massimo di tempo dal momento in cui il sistema avrebbe dovuto essere riavviato, questi dati rendono banale verificare se il sistema è stato riavviato da allora o meno.

Potrebbe essere fatto attraverso uno strumento di monitoraggio come Nagios o tramite uno script separato che l'amministratore di sistema mantiene sul suo computer (o piuttosto accessibile attraverso di esso, immagino) che si collega a ciascun computer a sua volta o in parallelo e stampa l'ora dall'ultimo riavvio in un certo formato. Tutto dipende da quanto elaborato per farlo.


8

Un altro modo, solo per completezza, è guardare /var/log/wtmpattraverso l' ultimo comando. Esempio:

$ 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

Questo metodo è uno dei preferiti perché capita anche di essere il perfetto mnemonico.

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

7

Quando un pacchetto che richiede un riavvio è stato aggiornato tramite apt, reboot-requiredviene creato un file chiamato /var/run/. Il sysadmin può verificare la presenza di questo file in remoto per determinare se è necessario un riavvio a causa degli aggiornamenti.


Il sysadmin ha chiesto all'OP di riavviare il computer "per applicare alcune patch". Almeno per me, questo implica che l'aggiornamento effettivo avviene attraverso alcuni meccanismi durante il processo di avvio . (Forse uno script di avvio che esegue qualcosa sulla falsariga di apt-get -y upgrade.) Quindi non ci sarebbe reboot-requiredperché dal punto di vista di apt, non è ancora necessario un riavvio.
un CVn il

2
Dubito che questo sia il caso, poiché l'utente dovrebbe riavviare due volte se gli aggiornamenti richiedono un riavvio dopo l'installazione e se non ci sono aggiornamenti che richiedono un riavvio, l'amministratore di sistema potrebbe semplicemente eseguire in remoto lo stesso script e aggiornare in background . Senza saperne di più, immagino che ci sia stato un aggiornamento dell'immagine del kernel (o qualcosa di diverso che richiede un riavvio) e l'utente ha dovuto riavviare per applicare il nuovo kernel. Ma questa è solo una supposizione.
onik,

2

Questo ...

per applicare alcune patch

è la parte chiave.

Se l'amministratore va bene, probabilmente ha impostato gli aggiornamenti dal SUO computer in modo che i PC non debbano scaricare lo stesso file dal web. In tal caso, può vedere dal suo computer chi ha scaricato le patch.

Deve quindi solo guardare gli indirizzi IP di quei sistemi che hanno caricato le patch e inviarli e inviarli via e-mail a quelli che non lo hanno fatto. Quell'e-mail può anche essere una posta generata automaticamente. Immagina che ci siano 500 macchine. Controllare manualmente ciascuno di essi è una perdita di tempo se ci sono diversi metodi in cui può fare da solo.

1 motivo molto importante per farlo in questo modo: un amministratore deve avere il controllo su ciò che sta accadendo sui sistemi che deve mantenere. Quindi dovrebbe sempre avere un unico punto di controllo (cioè la propria macchina dove ha tutti gli strumenti) dove può vedere lo stato di qualsiasi macchina.


3
Potrebbe essere necessario riavviare per applicare le patch, nessuna garanzia che il download avvenga solo al riavvio.
Karthik T,

2

Esistono diversi metodi validi descritti nelle risposte. Accedere e controllare i tempi di attività sarebbe strano per una grande azienda, ma fattibile per una più piccola. Il sysadmin avrebbe potuto controllare tramite SNMP, ma lo stesso argomento "guai" poteva essere usato lì.

Le situazioni più probabili sono, per quanto mi riguarda:

  1. Il sysadmin esegue una sorta di software di controllo, probabilmente Nagios, che verifica la presenza di problemi nei cluster di computer. Qualcosa come il plug-in NRPE verrà utilizzato per la maggior parte dei sistemi e può mostrare il tempo di attività (a parte il disco, gli utenti che hanno effettuato l'accesso, ecc.).
  2. Un metodo simile può essere utilizzato per verificare ciò che è in esecuzione dove. Se è possibile verificare le patch da aggiornare (quale kernel si sta utilizzando), lo script "sono aggiornati tutti gli utenti" continuerà a indicare al computer che si trova in uno stato "non valido".

1

Se il sistema è connesso a una rete che controlla, l'amministratore di sistema può semplicemente guardare lo switch o il server DHCP per vedere da quanto tempo è attiva la connessione di rete. Questo gli dirà anche che non hai riavviato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.