Ubuntu 시스템이 마지막으로 인터넷에 연결된 시간을 어떻게 확실하게 확인할 수 있습니까?


24

Ubuntu 시스템이 마지막으로 인터넷에 연결된 시간을 어떻게 확실하게 확인할 수 있습니까?

이것이 가능하지 않은 경우, Ubuntu 머신이 마지막으로 네트워크에 연결된 시간을 확인하는 방법으로 충분합니다.

답변:


28

방법 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연결이 마지막으로 설정된 시간이 계속 표시 되지 않는다는 것입니다


파일을 어디에서 찾습니까? :) 또한 마지막으로 기기를 인터넷에 연결 한 시간 또는 마지막으로 기기를 네트워크에 연결 한 시간을 확인합니까? 마지막으로 나중에 작동합니까?
kos

@kos는 여전히 syslog에 들어갑니다. 좀 더 연구하고 뭔가를 찾으면 답변을 업데이트하겠습니다.
Sergiy Kolodyazhnyy 2016 년

확인 man NetworkManager.conf했습니다. 파일은 다음과 같습니다 /etc/NetworkManager/NetworkManager.conf. 이것은 데몬에서 로깅을 활성화 한 후에 만 ​​작동하지만 불행히도 나중에 컴퓨터가 구성되지 않았다고 가정하여이를 확인해야합니다. 어쨌든 kern.log다른 경우에 도움이 될 솔루션과 첫 번째 솔루션에 대해 +1
kos

2
@kos 파일이 hex-string = epoch-timestamp를 포함하도록합니다. 16 진 문자열은 액세스 포인트입니다. 획기적인 타임 스탬프는 최신 연결 시간입니다. 내 awk 버전을 사용해보십시오. 나는 답변을 편집했습니다.
Sergiy Kolodyazhnyy

2
@DeadChex 나는 1 년에 의해 벗어났다 :) 이미 수정
Sergiy Kolodyazhnyy

6

/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 

1
+1, 인터넷에 마지막으로 연결 한 시간을 확인할 수있는 방법을 기대합니다. 오늘 안에 아무것도 나오지 않으면이 대답을 받아들입니다. 그러나 나는 당신에게 < /var/apt/syslog grep DHCPREQUEST또는 유사 와 같은 좀 더 사용하기 쉬운 솔루션을 제안하고 싶습니다 .
kos

1
DHCPREQUEST신뢰할 수 없습니다. 오후부터 온라인 상태이며 DHCP 요청이 많았습니다.
AB

@ Kos 당신은 실수로 귀하의 의견에 로그 대신 apt를 넣은 것 같습니다.
Sri

@Sri 실제로, 그것은 미끄러졌다. 운 좋게도 OP는 떨어지지 않았습니다!
kos

5

확인 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하고 있습니까?
kos

@kos Ups가 sudo제거되었습니다. GNU Awk 4.1.1, API : 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)
AB

이제는 작동합니다 :). +1
kos

@kos 내 필요 %;) 아래 줄에 출력이있는 경우
AB

1
나는 싫어한다 %. 이건 다 완벽 해!
Helio

2

이 작업을 수행하는 "올바른"방법을 찾지 못하면 언제든지 직접 제작할 수 있습니다!

다음 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
}

2

인터넷에서 릴레이되는 서비스 / 데몬 로그를 확인하는 한 가지 방법. 예를 들어 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

이것은 좋아 보이지만 적어도 우분투 데스크탑에서 기본적으로 활성화되어 있는지 확인할 수 있습니까? 지금은 개인적으로 테스트 할 수 없지만 실제로 내일 할 것입니다
kos

1
삭제하지 마십시오. 유용하며 내 범위에 좋습니다. 이것이 마지막으로 (더 많거나 적은) 지속적인 연결이 이루어진 시간을보고한다는 것을 이해하면 기계를 2 일 동안 연결 상태로두면보고합니다. 마지막 연결이 이루어진 날짜와 시간 (예 : 2 일 전)? 마지막으로, 누군가 5 분 후에 네트워크에서 연결을 끊고 다시 연결하면 어떻게됩니까? NTP 확인이 다시 실행됩니까? 아니면 새로운 NTP 검사가 실행되기 전에 마지막 NTP 검사 후에 어떤 종류의 임계 값이 있습니까?
kos

1
혼란스럽지 않은 @kos ntpdate는 기본적으로 설치되지만 별도의 패키지로 제공되는 ntpd/ openntpddaemon / service는 아닙니다 . 시간 및 날짜가 잘못된 것으로 변경되었는지 확인하려면 연결을 끊었다가 다시 연결하십시오.
user.dz

1
@kos는 주기적으로 시간을 업데이트 ntpdate하는 데 사용될 수 있으며 cron서비스를 실행하는 것과 동일한 결과를 제공합니다 (ntpd / openntpd). 그러나 기본 구성을 찾고 있으며 추가 조정이 필요하지 않습니다.
user.dz

1
죄송합니다. 잘못 읽었습니다. 예, 구성되지 않은 컴퓨터에서 사용할 것을 찾고있었습니다. 좋아, 이것은 나를 위해 일한다. 어쨌든 질문을 열어 두겠습니다. 감사! 앞으로 나아갈 것입니다. 어쨌든 그 로그는 거칠게 회전한다는 것을 염두에 두십시오.
kos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.