Jak mogę w wiarygodny sposób sprawdzić, kiedy maszyna Ubuntu po raz ostatni została podłączona do Internetu?
W przypadku, gdy nie jest to możliwe, wystarczający byłby sposób sprawdzenia, kiedy ostatni komputer Ubuntu był podłączony do sieci.
źródło
Jak mogę w wiarygodny sposób sprawdzić, kiedy maszyna Ubuntu po raz ostatni została podłączona do Internetu?
W przypadku, gdy nie jest to możliwe, wystarczający byłby sposób sprawdzenia, kiedy ostatni komputer Ubuntu był podłączony do sieci.
Metoda 1
Mimo że NetworkManager.conf pozwala na rejestrowanie, najwyraźniej nadal przechodzi do syslog. Jednak kern.log ma to również.
grep 'associated' /var/log/kern.log | tail -n1
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated
Metoda 2
Odkryłem, że NetworkManager przechowuje czas ostatniego połączenia i jest sortowany w /var/lib/NetworkManager/timestamps
pliku, w formacie czasu epoki unix (sekundy od 1970 roku). Mój wygląda tak na przykład:
$ cat /var/lib/NetworkManager/timestamps
[timestamps]
c562ac2d-8911-4273-b165-ed1495b28c9a=1432777079
46cfcdd9-d095-418f-acd6-0a7ca282bb9a=0
d81fb3d0-1717-42c0-903d-4622c2381597=1434895707
b0bdefe6-df88-49bb-83d8-154dd21d77d9=1433093286
Aby wyświetlić najnowszy wpis
date --date=@"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"
Awk wyszuka największy czas epoki (innymi słowy najpóźniej), a data przekształci go w czytelną dla człowieka formę.
Podejrzewam również, że ten plik ( /var/lib/NetworkManager/timestamps
) jest używany przez menu graficzne Edytuj połączenia do wyświetlenia ostatniego połączenia
Problem polega na tym, że jeśli nadal jesteś podłączony do punktu dostępu, sposób GUI ciągle pokazuje now
, że nie było, czas ostatniego połączenia
man NetworkManager.conf
, plik jest/etc/NetworkManager/NetworkManager.conf
; zadziała to dopiero po włączeniu logowania do demona, ale niestety muszę to później sprawdzić, zakładając, że maszyna nie została do tego skonfigurowana. W każdym razie +1 zakern.log
rozwiązanie i za pierwsze rozwiązanie, które może być pomocne w innych przypadkachMożesz sprawdzić plik
/var/log/syslog
, który wyświetli się podczas ostatniego połączenia z siecią.Przykład
Możesz uruchomić polecenie grep, aby pobrać tylko to, czego potrzebujesz z dziennika
źródło
< /var/apt/syslog grep DHCPREQUEST
lub warianty.DHCPREQUEST
nie jest wiarygodny. Jestem online od popołudnia i ponieważ miałem wiele żądań DHCP.Sprawdź
CONNECTED_GLOBAL
po tym, jak znaleźliśmylink connected
w/var/log/syslog
/link connected/,/CONNECTED_GLOBAL/
źródło
sudo
, jednak żadna z nich nie działa, myślę, że jest to spowodowane POSIXly[[:space:]]
. Którą wersjęawk
używasz?sudo
usunięte. GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)%
;) Jeśli w wierszu poniżej znajduje się wyjście%
. Wszystko oprócz tego jest idealne!Jeśli nie znajdziesz „właściwego” sposobu na zrobienie tego, zawsze możesz wyprodukować swój własny!
Poniższa funkcja bash powie ci, czy jesteś online (do Internetu), czy nie.
Musisz tylko napisać skrypt, który go wywołuje (w pętli, a następnie śpi) i rejestruje ostatnią datę i godzinę w pliku (nadpisywanie, więc ma tylko najnowszą wartość).
Trzeba będzie dodać kod do pętli, aby sprawdzał, jak tylko zostanie początkowo wywołany, i loguje się (więc stan początkowy jest ustawiony poprawnie).
Następnie logowałbyś się ponownie tylko wtedy, gdy stan po raz pierwszy przechodzi w tryb offline i gdy po raz pierwszy przechodzi w tryb online po przejściu w tryb offline. Łatwiej jest napisać kod niż wyjaśnić. ;)
Dokładność tego byłaby ograniczona przez czas, przez jaki opóźnienie (uśpienie) używane w pętli (aby nie było bardzo ciasną pętlą, która mogłaby zużywać zbyt wiele zasobów systemowych). Byłoby również nieświadome tego, co się stanie przed jego uruchomieniem lub gdy nie działa.
Sam skrypt można uruchomić (jako zadanie w tle (
&
na końcu wywołania), ewentualnie za pomocąnohup
celu utrzymania go, jeśli proces nadrzędny zakończy się), gdy użytkownik zaloguje się, uruchamiając go z pliku $ HOME / .profile, uruchamianie go za pomocą narzędzia autostart pulpitu (KDE lub Gnome), z zadania cron, które okresowo sprawdza, czy nie jest jeszcze uruchomione, lub nawet z dowolnego systemu startowego (init / systemd / etc., jeśli wiesz wystarczająco dużo, aby to zrobić że.)Kiedy nie możesz znaleźć czegoś takiego, co robi dokładnie to, czego chcesz, często nie jest zbyt trudno napisać własny skrypt, aby to zrobić i uruchomić go jak demon w tle.
Najlepiej jest uruchamiać go z konta zwykłego użytkownika, jeśli to możliwe - chyba że kodujesz go w solidnym języku, takim jak C lub Python - ponieważ skrypty powłoki działające z uprawnieniami administratora często stanowią zagrożenie bezpieczeństwa.
Podejście to ma inny problem. Czasami ping wygaśnie, dając ci fałszywy status offline.
Mam pełny skrypt, offline_alert , który robi coś wręcz przeciwnego do tego, czego chcesz - ostrzega mnie, gdy przechodzę do trybu offline - ale kod może się przydać. Ma lepszą funkcję offline, która próbuje zmniejszyć liczbę fałszywych alarmów po przekroczeniu limitu czasu ping.
źródło
Jednym ze sposobów sprawdzenia dowolnego dziennika usługi / demona, który przekazuje do Internetu działanie. Na przykład aktualizacje NTP (Network Time Protocol).
Zobacz
dpkg -L ntpdate
haki stanu sieciCóż, sprawdziłem jego dziennik na pulpicie Ubuntu, jego aktualizacja jest uruchamiana przy każdym połączeniu z siecią i próbuję po krótkim opóźnieniu, jeśli ostatnia aktualizacja się nie powiedzie. Łączy się
ntp.ubuntu.com
.(Uwaga, dodałem pierwszą kolumnę w danych wyjściowych dla moich komentarzy)
Potwierdzam, że jest instalowany domyślnie w wersjach na komputery i serwery Ubuntu 14.04 LTS 64Bit.
Próbowałem na maszynie wirtualnej, pokazuje tylko czas połączenia lub ponownego połączenia (z dostępem do Internetu). Nie to, czego chcesz (ostatni raz był podłączony)
Uwaga: syslog jest dziennikiem obrotowym, jeśli chcesz przeszukać wszystkie dzienniki, nawet te stare, skompresowane, użyj
zgrep
źródło
ntpdate
jest instalowany domyślnie, ale nientpd
/openntpd
daemon / service, który jest dostarczany w osobnych pakietach. Aby sprawdzić zmianę czasu i daty na niewłaściwą, odłącz, a następnie podłącz ponownie.ntpdate
może być używanycron
do okresowej aktualizacji czasu, będzie miał takie same wyniki jak uruchomienie usługi (ntpd / openntpd). Ale szukasz domyślnej konfiguracji i żadnego dodatkowego strojenia, prawda?