Відповіді:
Спосіб 1
Навіть незважаючи на те, що NetworkManager.conf дозволяє вести журнал, це, очевидно, все ще переходить у syslog. Однак kern.log також має його.
grep 'associated' /var/log/kern.log | tail -n1
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated
Спосіб 2
Я виявив, що NetworkManager зберігає час останнього з'єднання, і він сортується за /var/lib/NetworkManager/timestamps
файлами, у форматі часу Unix epoch (секунди з 1970 року). Моя, наприклад, виглядає так:
$ 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
Показати останні записи
date --date=@"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"
Awk буде шукати найбільшу епоху часу (іншими словами, останню), а дата перетворить його в читану людиною форму.
Підозрюю також, що цей файл ( /var/lib/NetworkManager/timestamps
) використовується графічним меню редагування підключень для відображення останнього часу з'єднання
Проблема полягає в тому, що якщо ви все ще підключені до точки доступу, то спосіб графічного інтерфейсу не відображається now
, час останнього встановлення з’єднання
man NetworkManager.conf
, файл є /etc/NetworkManager/NetworkManager.conf
; це буде працювати лише після включення входу в демон, але, на жаль, мені потрібно перевірити це згодом, припускаючи, що машина для цього не була налаштована. У будь-якому разі +1 за kern.log
рішення та для першого рішення, яке може бути корисним в інших випадках
Ви можете перевірити файл, /var/log/syslog
який відображатиметься востаннє, коли ви підключились до мережі.
Приклад
Jun 21 08:00:00 Ubuntu dhclient: DHCPREQUEST of 192.0.0.0 on wlan0 to 192.0.0.0 port 67 (xid=0xec7c6e7)
Ви можете виконати команду grep, щоб витягнути з журналу лише те, що вам потрібно
< /var/log/syslog grep DHCPREQUEST
< /var/apt/syslog grep DHCPREQUEST
або варіанти.
DHCPREQUEST
не є надійним. Я в Інтернеті з другого дня, і тому що у мене було багато запитів DHCP.
Перевірте CONNECTED_GLOBAL
після того, як ми знайшли link connected
в/var/log/syslog
/link connected/,/CONNECTED_GLOBAL/
% awk '/link connected/,/CONNECTED_GLOBAL/ {line=$0} END{print line}' /var/log/syslog
Jun 21 11:12:54 sturm NetworkManager[736]: <info> NetworkManager state is now CONNECTED_GLOBAL Jun 21 11:12:54
% awk '/link connected/,/CONNECTED_GLOBAL/ {month=$1;day=$2;time=$3} END{print month,day,time}' /var/log/syslog
Jun 21 11:12:54
sudo
першому немає необхідності , проте жодне з них не працює, я думаю, це через POSIXly [[:space:]]
. Яку версію awk
ви працюєте?
sudo
видалено. GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)
%
;) Якщо в нижньому рядку є вихід
%
. Все, окрім цього ідеально!
Якщо ви не знайдете "правильний" спосіб це зробити, ви завжди можете виготовити свій власний!
Наступна функція bash підкаже, чи ви в Інтернеті (чи в Інтернеті) чи ні.
Вам просто доведеться написати сценарій, який викликає його (у циклі, а потім спить) і записує останню дату та час у файл (перезапис, тому він просто має останнє значення).
Вам потрібно буде додати код до циклу, щоб він перевіряв, як тільки він був спочатку викликаний, і журнали (щоб ваш початковий стан встановлено правильно).
Після цього ви знову входите в систему лише тоді, коли стан вперше перейде в режим офлайн і коли він вперше з’явиться в Інтернеті після відключення. Простіше кодувати, ніж пояснювати. ;)
Це буде обмежене точністю тим, скільки часу затримку (сну) ви використовуєте в циклі (щоб не бути дуже тугим циклом, який може споживати занадто багато системних ресурсів.) Також було б невідомо про те, що відбувається перед його запуском. або коли він не працює.
Сам скрипт можна запустити (як фонове завдання ( &
наприкінці виклику), можливо, з тим, nohup
щоб він продовжував працювати, якщо його батьківський процес закінчується), коли ваш користувач увійде в систему, запустивши його з вашого $ HOME / .profile файла, запустивши його за допомогою утиліти автоматичного запуску на робочому столі (KDE або Gnome), із завдання, яке періодично перевіряє, чи не запущено, або навіть із будь-якої системи запуску (init / systemd / тощо.), якщо ви знаєте, що достатньо зробити що.)
Коли ви не можете знайти щось подібне, яке робить саме те, що ви хочете, часто не надто складно написати власний сценарій, щоб зробити це і запустити його, як демон у фоновому режимі.
Найкраще запускати його з звичайного облікового запису користувача, якщо це можливо - якщо ви не кодуєте його на надійній мові, як C або Python, - оскільки сценарії оболонки, що працюють з привілеями root, часто несуть загрозу безпеці.
Такий підхід має ще одне питання. Іноді пінг закінчиться тимчасовим режимом, який надасть вам помилковий статус у режимі офлайн.
У мене є повний скрипт, offline_alert , який майже робить протилежне тому, що ви хочете - попереджає мене, коли я переходжу в офлайн - але код може виявитися корисним. Він має кращу функцію в режимі офлайн, яка намагається зменшити помилкові позитивні результати з часу пінгу.
function offline {
## Test if offline
## Returns 0 if online, 2 if offline
local RC
ping -c 1 google.com > /dev/null 2>&1
RC=$?
##echo "offline returning [${RC}]"
return $RC
}
Один із способів перевірити роботу будь-якого сервісу / демона, що ретранслюються в Інтернеті. Наприклад, оновлення NTP (Network Time Protocol).
Дивіться dpkg -L ntpdate
про гачки стану мережі
Ну а я перевірив його журнал на робочий стіл Ubuntu, його оновлення запускається щоразу, коли мережа працює, і намагаюсь після короткої затримки, якщо останнє оновлення не вдалося. Він з'єднує ntp.ubuntu.com
.
(Зверніть увагу, я додав перший стовпець у висновку для своїх коментарів)
$ grep -r ntpdate /var/log/syslog*
1st_trial Jul 14 00:35:56 user-VirtualBox ntpdate[774]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 00:35:56 user-VirtualBox ntpdate[774]: no servers can be used, exiting
2nd_trial Jul 14 03:38:57 user-VirtualBox ntpdate[2571]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 03:38:57 user-VirtualBox ntpdate[2571]: no servers can be used, exiting
3rd_trial Jul 14 03:46:09 user-VirtualBox ntpdate[2782]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 03:46:09 user-VirtualBox ntpdate[2782]: no servers can be used, exiting
4th_trial Jul 14 03:47:48 user-VirtualBox ntpdate[2917]: step time server 91.189.89.199 offset 3.458355 sec
1st_trial Jul 14 10:23:07 user-VirtualBox ntpdate[728]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 10:23:07 user-VirtualBox ntpdate[728]: no servers can be used, exiting
2nd_trial Jul 14 10:37:22 user-VirtualBox ntpdate[2099]: step time server 91.189.89.199 offset 2.021103 sec
dis-/re-con Jul 14 15:27:09 user-VirtualBox ntpdate[20174]: step time server 91.189.89.199 offset 1.677465 sec
1st_trial Jul 14 23:55:00 user-VirtualBox ntpdate[807]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 23:55:00 user-VirtualBox ntpdate[807]: no servers can be used, exiting
2nd_trial Jul 15 00:00:24 user-VirtualBox ntpdate[2041]: step time server 91.189.94.4 offset 1.619839 sec
1st_trial Jul 15 05:39:08 user-VirtualBox ntpdate[767]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 15 05:39:08 user-VirtualBox ntpdate[767]: no servers can be used, exiting
2nd_trial Jul 15 05:39:21 user-VirtualBox ntpdate[1088]: step time server 91.189.94.4 offset 2.897077 sec
1st_trial Jul 15 05:49:40 user-VirtualBox ntpdate[787]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 15 05:49:40 user-VirtualBox ntpdate[787]: no servers can be used, exiting
2nd_trial Jul 15 05:49:50 user-VirtualBox ntpdate[1101]: adjust time server 91.189.94.4 offset 0.090520 sec
reconnect Jul 15 05:55:50 user-VirtualBox ntpdate[2251]: adjust time server 91.189.94.4 offset 0.261432 sec
reconnect Jul 15 06:04:53 user-VirtualBox ntpdate[2702]: step time server 91.189.94.4 offset 0.525658 sec
Я підтверджую, що він встановлений за замовчуванням для версій Ubuntu 14.04 LTS 64Bit для настільних ПК та серверів.
Я спробував це в VM, він показує лише час, коли він підключається або знову підключається (з Інтернетом). Не те, що ти хочеш (востаннє було підключено)
Зауважте, syslog - це журнал обертання, якщо ви хочете шукати всі журнали, навіть старі стислі, використовуйте zgrep
zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2
ntpdate
встановлюється за замовчуванням, але не ntpd
/ openntpd
daemon / service, який постачається в окремих пакетах. Щоб перевірити, чи змінили час і дату на неправильну, відключіться, а потім знову підключіться.
ntpdate
можна cron
періодично оновлювати час, він матиме ті ж результати, що й запуск служби (ntpd / openntpd). Але ви шукаєте конфігурацію за замовчуванням і немає додаткової настройки, правда?