Ответы:
Способ 1
Несмотря на то, что NetworkManager.conf разрешает ведение журнала, он все еще входит в системный журнал Тем не менее, 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 (секунды с 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
) используется графическим меню «Редактировать соединения» для отображения последнего времени соединения
Проблема в том, что если вы все еще подключены к точке доступа, то способ GUI не показывает 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) из задания cron, которое периодически проверяет, не запущено ли оно, или даже из какой-либо имеющейся у вас системы запуска (init / systemd / etc., если вы знаете достаточно для этого) что.)
Когда вы не можете найти что-то вроде этого, которое делает именно то, что вы хотите, часто не так уж сложно написать свой собственный скрипт для этого и запустить его, как демон в фоновом режиме.
Лучше всего запускать его из учетной записи обычного пользователя, если это возможно - если только вы не кодируете его на надежном языке, таком как 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 (сетевой протокол времени).
Смотрите 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.
Я попробовал в ВМ, он показывает только время подключения или повторного подключения (при наличии Интернета). Не то, что вы хотите (в прошлый раз был подключен)
Обратите внимание, syslog - это журнал чередования, если вы хотите найти все логи, даже старые сжатые, используйте zgrep
zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2
ntpdate
устанавливается по умолчанию, но не ntpd
/ openntpd
daemon / service, которая поставляется в отдельных пакетах. Чтобы проверить, что вы меняете время и дату на неправильное, отсоедините и снова подключите.
ntpdate
может использоваться cron
для периодического обновления времени, оно будет иметь те же результаты, что и запуск службы (ntpd / openntpd). Но вы ищете конфигурацию по умолчанию и никаких дополнительных настроек, верно?