ฉันจะตรวจสอบได้อย่างน่าเชื่อถือว่าเป็นครั้งสุดท้ายที่เครื่อง 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ไฟล์ในรูปแบบเวลา unix epoch (วินาทีตั้งแต่ 1970) Mine มีลักษณะเช่นนี้:

$ 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) ใช้โดยเมนูกราฟิก Edit Connections เพื่อแสดงการเชื่อมต่อครั้งสุดท้าย

ป้อนคำอธิบายรูปภาพที่นี่

ปัญหาคือว่าถ้าคุณยังเชื่อมต่อกับจุดเชื่อมต่อวิธี GUI nowไม่แสดงเวลาในการสร้างการเชื่อมต่อล่าสุด


ฉันจะหาไฟล์ได้ที่ไหน :) สิ่งนี้จะตรวจสอบเวลาล่าสุดที่เครื่องเชื่อมต่อกับอินเทอร์เน็ตหรือครั้งล่าสุดที่เครื่องเชื่อมต่อกับเครือข่ายหรือไม่ สุดท้ายนี้สามารถใช้งานได้ในภายหลังหรือไม่
kos

@kos เห็นได้ชัดว่ายังคงเข้าไปใน syslog ฉันจะค้นคว้าเพิ่มอีกเล็กน้อยและหากฉันพบบางสิ่งฉันจะอัปเดตคำตอบของฉัน
Sergiy Kolodyazhnyy

ตกลงฉันตรวจสอบman NetworkManager.confไฟล์เป็น/etc/NetworkManager/NetworkManager.conf; สิ่งนี้จะใช้งานได้หลังจากเปิดใช้งานการบันทึกใน daemon เท่านั้น แต่น่าเสียดายที่ฉันต้องตรวจสอบในภายหลังหากว่าเครื่องไม่ได้ถูกกำหนดค่าไว้ อย่างไรก็ตาม +1 สำหรับkern.logวิธีแก้ปัญหาและสำหรับวิธีแก้ปัญหาแรกซึ่งอาจเป็นประโยชน์ในกรณีอื่น ๆ
kos

2
@kos ดังนั้นไฟล์นั้นมี hex-string = epoch-timestamp สตริงฐานสิบหกเป็นจุดเชื่อมต่อ epoch-timestamps เป็นเวลาล่าสุดของการเชื่อมต่อ ลองรุ่น awk ของฉันที่นั่นฉันได้แก้ไขคำตอบของฉัน
Sergiy Kolodyazhnyy

2
@DeadChex ฉันถูกปิดโดยหนึ่งปี :) แก้ไขแล้ว
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 คุณดูเหมือนจะใส่ผิดพลาดเข้าสู่ระบบในความคิดเห็นของคุณ
ศรี

@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

หากคุณไม่พบวิธีที่ "ถูกต้อง" คุณสามารถผลิตสินค้าของคุณเองได้ตลอดเวลา!

ฟังก์ชั่นทุบตีต่อไปนี้จะบอกคุณว่าคุณออนไลน์ (ต่ออินเทอร์เน็ต) หรือไม่

คุณจะต้องเขียนสคริปต์ที่เรียกมันว่า (ในลูปแล้วพัก) และบันทึกวันที่และเวลาล่าสุดไปยังไฟล์ (เขียนทับดังนั้นมันจึงมีค่าล่าสุดเท่านั้น)

คุณจะต้องเพิ่มรหัสลงในลูปเพื่อให้ตรวจสอบทันทีที่มันถูกเรียกใช้ครั้งแรกและบันทึก (ดังนั้นสถานะเริ่มต้นของคุณจะถูกตั้งค่าอย่างถูกต้อง)

หลังจากนั้นคุณจะเข้าสู่ระบบอีกครั้งเมื่อสถานะเป็นออฟไลน์เป็นครั้งแรกและเมื่อออนไลน์เป็นครั้งแรกหลังจากออฟไลน์ รหัสง่ายกว่าที่จะอธิบาย ;)

สิ่งนี้จะถูก จำกัด ในความถูกต้องโดยระยะเวลาที่ล่าช้า (สลีป) ที่คุณใช้ในลูป (เพื่อป้องกันมิให้ลูปคับมากซึ่งอาจกินทรัพยากรของระบบมากเกินไป) มันจะไม่รู้ว่าเกิดอะไรขึ้นก่อนที่มันจะเริ่มทำงาน หรือเมื่อมันไม่ทำงาน

สคริปต์สามารถเริ่มต้นได้ (เป็นงานพื้นหลัง ( &ในตอนท้ายของการเรียกใช้) อาจเป็นnohupเพื่อให้ทำงานต่อไปหากกระบวนการหลักสิ้นสุดลง) เมื่อผู้ใช้ของคุณลงชื่อเข้าใช้โดยเรียกใช้จากไฟล์ $ HOME / .profile ของคุณ เริ่มต้นด้วยยูทิลิตี้ autostart เดสก์ทอปของคุณ (KDE หรือ Gnome) จากงาน cron ที่ตรวจสอบเป็นระยะเพื่อดูว่ามันยังไม่ได้ทำงานอยู่หรือแม้แต่จากระบบเริ่มต้นที่คุณมี (init / systemd / ฯลฯ หากคุณรู้พอที่จะทำ ที่.)

เมื่อคุณไม่สามารถหาสิ่งนี้ทำสิ่งที่คุณต้องการมันมักจะไม่ยากที่จะเขียนสคริปต์ของคุณเพื่อทำมันและเรียกใช้มันเหมือนภูตในพื้นหลัง

เป็นการดีที่สุดที่จะเรียกใช้จากบัญชีผู้ใช้ปกติถ้าเป็นไปได้ - ยกเว้นว่าคุณใช้รหัสในภาษาที่แข็งแกร่งเช่น C หรือ Python เพราะเชลล์สคริปต์ที่รันด้วยสิทธิ์พิเศษมักจะมีความเสี่ยงด้านความปลอดภัย

วิธีนี้มีปัญหาอื่น บางครั้งการ ping จะให้เวลากับสถานะออฟไลน์ที่ผิด

ฉันมีสคริปต์แบบเต็มoffline_alertซึ่งตรงข้ามกับสิ่งที่คุณต้องการมาก - เตือนฉันเมื่อฉันออฟไลน์ - แต่รหัสอาจมีประโยชน์ มันมีฟังก์ชั่นออฟไลน์ที่ดีขึ้นซึ่งพยายามที่จะลดผลบวกปลอมจากการหมดเวลาของ ping

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สถานะตะขอเครือข่าย

เช่นเดียวกับที่ฉันได้ตรวจสอบบันทึกของมันสำหรับเดสก์ท็อป 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

สิ่งนี้ดูดี แต่คุณสามารถยืนยันได้ว่านี่เปิดใช้งานอย่างน้อยบน Ubuntu Desktop หรือไม่ ฉันไม่สามารถทดสอบได้เป็นการส่วนตัวในตอนนี้ แต่ฉันจะทำในวันพรุ่งนี้แน่นอน
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.