답변:
방법 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
파일 형식으로 유닉스 시대 시간 형식 (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
. 이것은 데몬에서 로깅을 활성화 한 후에 만 작동하지만 불행히도 나중에 컴퓨터가 구성되지 않았다고 가정하여이를 확인해야합니다. 어쨌든 kern.log
다른 경우에 도움이 될 솔루션과 첫 번째 솔루션에 대해 +1
/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
첫 번째 에는 필요하지 않지만 이것들 중 아무것도 작동하지 않습니다 [[:space:]]
. POSIXly 때문이라고 생각합니다 . 어떤 버전을 사용 awk
하고 있습니까?
sudo
제거되었습니다. GNU Awk 4.1.1, API : 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)
%
;) 아래 줄에 출력이있는 경우
%
. 이건 다 완벽 해!
이 작업을 수행하는 "올바른"방법을 찾지 못하면 언제든지 직접 제작할 수 있습니다!
다음 bash 함수는 온라인 상태인지 인터넷 상태인지 알려줍니다.
스크립트를 호출하고 (루프에서 잠자기) 마지막 날짜와 시간을 파일에 기록하는 스크립트를 작성하면됩니다 (덮어 쓰기이므로 최신 값만 갖습니다).
루프에 코드를 추가하여 코드가 처음 호출되고 로그되는 즉시 확인하므로 초기 상태가 올바르게 설정되어 있어야합니다.
그 후에는 상태가 처음 오프라인이 될 때와 오프라인이 된 후 처음 온라인이 될 때만 다시 기록합니다. 설명하는 것보다 코딩하는 것이 더 쉽습니다. ;)
루프에서 사용하는 지연 시간 (슬립)에 의해 정확도가 제한됩니다 (너무 많은 시스템 자원을 소비 할 수있는 매우 단단한 루프가되지 않도록하기 위해). 또한 시작되기 전에 발생하는 모든 작업을 인식하지 못합니다. 또는 실행 중이 아닐 때.
사용자가 $ HOME / .profile 파일에서 스크립트를 실행하여 로그인하면 스크립트 자체를 백그라운드 작업 ( &
호출 nohup
종료시)으로 시작할 수 있습니다 (부모 프로세스가 종료되면 스크립트 를 계속 실행할 수 있음). 데스크톱 자동 시작 유틸리티 (KDE 또는 Gnome)를 사용하여 주기적으로 실행되고 있는지 확인하는 크론 작업 또는 사용중인 시작 시스템 (init / systemd / etc 등)에서 시작 그.)
원하는 것을 정확하게 수행하는 이와 같은 것을 찾을 수 없을 때, 직접 스크립트를 작성하여 백그라운드에서 데몬처럼 실행하는 것은 그리 어렵지 않습니다.
루트 권한으로 실행되는 셸 스크립트는 종종 보안 위험을 초래할 수 있으므로 가능하면 C 또는 Python과 같은 강력한 언어로 코드를 작성하지 않는 한 일반 사용자 계정에서 실행하는 것이 가장 좋습니다.
이 접근법에는 또 다른 문제가 있습니다. 때로는 핑 시간이 초과되어 잘못된 오프라인 상태가됩니다.
나는 전체 스크립트 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
네트워크 상태 후크 참조
우분투 데스크탑의 로그를 확인 했으므로 네트워크가 실행될 때마다 업데이트가 실행되고 마지막 업데이트가 실패한 경우 짧은 지연 후에도 계속 시도합니다. 연결합니다 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). 그러나 기본 구성을 찾고 있으며 추가 조정이 필요하지 않습니다.