Skąd mój administrator sys wie, że nie zrestartowałem systemu?

35

Otrzymałem wiadomość e-mail od administratora systemu z informacją, że muszę ponownie uruchomić system, aby zastosować poprawki. Zapomniałem o tym i po kilku godzinach dostałem kolejną wiadomość z informacją, że mam jeszcze uruchomić system.

Od tego czasu zrestartowałem system, ale jestem zaskoczony, skąd będą wiedzieć, czy uruchomiłem ponownie komputer, czy nie. Czy ktoś może wyjaśnić, jak to działa?

nikhil
źródło
10
Może powinieneś go zapytać?
Marco Ceppi
1
Wow, nigdy nie zdawałem sobie sprawy, że istnieje tak wiele sposobów. Dzięki chłopaki!
nikhil

Odpowiedzi:

43

Szybki sposób sprawdzenia tego zdalnie można wykonać za pomocą SNMP (pod warunkiem, że SysAdmin skonfigurował to w sieci):

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

Najprawdopodobniej dane byłyby badane i przechowywane w pewnego rodzaju systemie zarządzania / monitorowania sieci (np. Nagios lub Kaktusy).

Jeśli ktoś jest zainteresowany pobawieniem się snmpwalkpoleceniem, zapoznaj się z odpowiedzią tutaj, aby uzyskać podstawową konfigurację SNMP w systemie.

Kevin Bowen
źródło
Niezłe. Ktoś tutaj stworzył skrypt, który wydaje się nieco trudny w utrzymaniu, a ten jeden linijka wygląda ładnie: D Dzięki i życzę pochwały;)
Rinzwind 21.01.2013
@Rinzwind Thanks. Oto inny liniowiec, którego czasami używamsudo hping3 -c 2 -p 80 --tcp-timestamp -S <IPaddress> 2>&1 | grep uptime
Kevin Bowen
Każde regularne oprogramowanie monitorujące może to zrobić, jednak SNMP jest najczęstszym i jest to dobry przykład. +1.
gertvdijk
28

Prostą metodą będzie sprawdzenie danych wyjściowych uptimepolecenia, które pokazuje, jak długo działasz w systemie bez wyłączania / restartowania.

Przykładowe dane wyjściowe:

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

Mówi, że mój system był włączony przez 3 godziny i 8 minut.

Administrator może skonfigurować skrypt powłoki, aby korzystał z uptimeinnej metody lub korzystał z niej, jak opisano w tym łączu . Inną metodą, z której może korzystać administrator, jest skonfigurowanie wiadomości e-mail, która będzie wysyłana przy wyłączaniu systemu lub ponownym uruchomieniu, szczegółowe informacje są dostępne pod tym linkiem .

saji89
źródło
Czy można to zrobić zdalnie, jeśli nie mieli oni dostępu do zalogowania się na moim komputerze?
nikhil
1
Administrator z pewnością będzie miał dostęp do twojego systemu do celów administracyjnych. :)
saji89
5
mało prawdopodobne @ saji89 Administrator ma lepsze rzeczy do zrobienia, aby sprawdzić lokalnie każdy system pod kątem czasu pracy ...
Rinzwind 21.01.2013
2
@Rinzwind, nie mówiłem, że powinien go używać. Właśnie wskazałem, że będzie miał dostęp do maszyny. W tym konkretnym przypadku administrator miał powody, by to sprawdzić. :)
saji89
1
Ach ok. Ale mam lepsze rzeczy do roboty niż sprawdzanie czasu pracy systemów;) @ saji89
Rinzwind
9

@ saji89 wspomniał o uptimepoleceniu. Zejdę o krok niżej i po prostu założę, że sysadmin ma gdzieś skrypt, który łączy się z każdym komputerem i wykonuje cat /proc/uptime(lub coś równoważnego). Pierwszym polem wyniku jest czas w sekundach od ostatniego uruchomienia systemu, co jest znacznie łatwiejsze do przeanalizowania niż wynik uptime. Na przykład mój komputer daje pierwsze pole nieprzerwanego działania 1441218.24po uptimepowrocie up 16 days, 16:20. 1441218 sekund to 16 dni plus 58818 sekund, a 58818 sekund to 16 1/3 godzin. 16 dni 16 1/3 godzin.

Gdy znasz maksymalny czas, po którym system powinien zostać ponownie uruchomiony, dane te sprawiają, że sprawdzenie, czy system został zrestartowany od tego czasu, jest banalne.

Można to zrobić za pomocą narzędzia do monitorowania, takiego jak Nagios, lub osobnego skryptu, który sysadmin przechowuje na swoim komputerze (lub raczej za jego pośrednictwem, jak sądzę), który łączy się z każdym komputerem po kolei lub równolegle i drukuje czas od ostatniego restartu w jakimś formacie. Wszystko zależy od tego, jak skomplikowane jest wykonanie.

CVn
źródło
8

Innym sposobem, po prostu ze względu na kompletność, jest przyjrzenie się /var/log/wtmpprzez ostatni rozkaz. Przykład:

$ 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

Ta metoda jest ulubiona, ponieważ zdarza się, że jest również idealnym mnemonikiem.

Q: When did the last reboot occur? 
A: Just type 'last reboot'
arielf
źródło
7

Gdy pakiet wymagający ponownego uruchomienia zostanie zaktualizowany za pośrednictwem apt, reboot-requiredtworzony jest plik o nazwie /var/run/. Administrator systemu może zdalnie sprawdzić obecność tego pliku, aby ustalić, czy wymagane jest ponowne uruchomienie komputera z powodu aktualizacji.

onik
źródło
OP poprosił sysadmin o ponowne uruchomienie komputera „w celu zastosowania niektórych poprawek”. Przynajmniej dla mnie oznacza to, że faktyczna aktualizacja odbywa się za pośrednictwem jakiegoś mechanizmu podczas procesu rozruchu . (Może skrypt rozruchowy wykonujący coś w stylu apt-get -y upgrade.) Więc nie byłoby, reboot-requiredbo z punktu widzenia apt, restart nie jest jeszcze wymagany.
CVn
2
Wątpię, aby tak było, ponieważ użytkownik musiałby ponownie uruchomić ponownie dwa razy, jeśli aktualizacje wymagają ponownego uruchomienia po instalacji, a jeśli nie ma żadnych aktualizacji wymagających ponownego uruchomienia, sysadmin może po prostu zdalnie uruchomić ten sam skrypt i przeprowadzić aktualizację w tle . Nie wiedząc więcej, domyślam się, że była aktualizacja obrazu jądra (lub coś innego wymagającego ponownego uruchomienia), a użytkownik musiał zrestartować się, aby zastosować nowe jądro. Ale to tylko zgadywanie.
onik
2

To ...

zastosować kilka poprawek

jest kluczową częścią.

Jeśli administrator jest dobry, prawdopodobnie skonfigurował aktualizacje z komputera HIS, aby komputery PC nie musiały pobierać tego samego pliku z Internetu. Jeśli tak, może zobaczyć na własnej maszynie, kto pobrał łatki.

Następnie musi tylko spojrzeć na adresy IP tych systemów, które załadowały łatki oraz wysłać i wysłać e-mailem do tych, które tego nie zrobiły. Ten e-mail może być nawet pocztą generowaną automatycznie. Wyobraź sobie, że jest 500 maszyn. Ręczne sprawdzanie każdego z nich to strata czasu, jeśli istnieje kilka metod, w których można to zrobić z własnego machime.

1 bardzo ważny powód, aby zrobić to w ten sposób: administrator musi mieć kontrolę nad tym, co dzieje się w systemach, które musi utrzymywać. Powinien więc zawsze mieć jeden punkt kontroli (tj. Własną maszynę, w której ma wszystkie narzędzia), w której może zobaczyć status dowolnej maszyny.

Rinzwind
źródło
3
Może być konieczne ponowne uruchomienie komputera w celu zastosowania poprawek, nie ma gwarancji, że pobieranie nastąpi tylko podczas ponownego uruchomienia.
Karthik T
2

Istnieje kilka prawidłowych metod opisanych w odpowiedziach. Logowanie i sprawdzanie czasu pracy byłoby dziwne dla dużej firmy, ale wykonalne dla mniejszej. Administrator mógł sprawdzać za pomocą SNMP, ale można tam zastosować ten sam argument „kłopot”.

Moim zdaniem najbardziej prawdopodobne sytuacje to:

  1. Sysadmin uruchamia oprogramowanie sprawdzające, prawdopodobnie Nagios, które sprawdza klastry komputera pod kątem problemów. Coś takiego jak wtyczka NRPE będzie używana w większości systemów i może pokazywać ci czas działania (oprócz dysku, zalogowanych użytkowników itp.).
  2. Podobną metodę można zastosować, aby sprawdzić, co działa gdzie. Jeśli można sprawdzić łatki do aktualizacji (jakiego jądra używasz), skrypt „zaktualizowano wszystkich użytkowników” nadal będzie wskazywał na twój komputer, ponieważ jest w „złym” stanie.
Nanne
źródło
1

Jeśli system jest podłączony do kontrolowanej przez niego sieci, sysadmin może po prostu spojrzeć na przełącznik lub serwer dhcp, aby sprawdzić, jak długo twoje połączenie sieciowe jest aktywne. To również powie mu, że nie zrestartowałeś się.

Dennis Kaarsemaker
źródło