ฉันจะตรวจสอบได้อย่างน่าเชื่อถือว่าเป็นครั้งสุดท้ายที่เครื่อง Ubuntu เชื่อมต่อกับอินเทอร์เน็ตอย่างไร
ในกรณีที่ไม่สามารถทำได้วิธีการตรวจสอบครั้งล่าสุดที่เครื่อง Ubuntu เชื่อมต่อกับเครือข่ายจะดีพอ
ฉันจะตรวจสอบได้อย่างน่าเชื่อถือว่าเป็นครั้งสุดท้ายที่เครื่อง Ubuntu เชื่อมต่อกับอินเทอร์เน็ตอย่างไร
ในกรณีที่ไม่สามารถทำได้วิธีการตรวจสอบครั้งล่าสุดที่เครื่อง Ubuntu เชื่อมต่อกับเครือข่ายจะดีพอ
คำตอบ:
วิธีที่ 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
ไม่แสดงเวลาในการสร้างการเชื่อมต่อล่าสุด
man NetworkManager.conf
ไฟล์เป็น/etc/NetworkManager/NetworkManager.conf
; สิ่งนี้จะใช้งานได้หลังจากเปิดใช้งานการบันทึกใน daemon เท่านั้น แต่น่าเสียดายที่ฉันต้องตรวจสอบในภายหลังหากว่าเครื่องไม่ได้ถูกกำหนดค่าไว้ อย่างไรก็ตาม +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
ในครั้งแรก แต่ไม่มีของเหล่านี้เป็นคนที่ทำงานผมคิดว่ามันเป็นเพราะของ [[:space:]]
POSIXly awk
คุณกำลังใช้เวอร์ชันใดอยู่
sudo
นำออกแล้ว GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)
%
;) หากมีผลลัพธ์ในบรรทัดด้านล่าง
%
ฉันไม่ชอบ ทั้งหมดนี้ แต่สมบูรณ์แบบ!
หากคุณไม่พบวิธีที่ "ถูกต้อง" คุณสามารถผลิตสินค้าของคุณเองได้ตลอดเวลา!
ฟังก์ชั่นทุบตีต่อไปนี้จะบอกคุณว่าคุณออนไลน์ (ต่ออินเทอร์เน็ต) หรือไม่
คุณจะต้องเขียนสคริปต์ที่เรียกมันว่า (ในลูปแล้วพัก) และบันทึกวันที่และเวลาล่าสุดไปยังไฟล์ (เขียนทับดังนั้นมันจึงมีค่าล่าสุดเท่านั้น)
คุณจะต้องเพิ่มรหัสลงในลูปเพื่อให้ตรวจสอบทันทีที่มันถูกเรียกใช้ครั้งแรกและบันทึก (ดังนั้นสถานะเริ่มต้นของคุณจะถูกตั้งค่าอย่างถูกต้อง)
หลังจากนั้นคุณจะเข้าสู่ระบบอีกครั้งเมื่อสถานะเป็นออฟไลน์เป็นครั้งแรกและเมื่อออนไลน์เป็นครั้งแรกหลังจากออฟไลน์ รหัสง่ายกว่าที่จะอธิบาย ;)
สิ่งนี้จะถูก จำกัด ในความถูกต้องโดยระยะเวลาที่ล่าช้า (สลีป) ที่คุณใช้ในลูป (เพื่อป้องกันมิให้ลูปคับมากซึ่งอาจกินทรัพยากรของระบบมากเกินไป) มันจะไม่รู้ว่าเกิดอะไรขึ้นก่อนที่มันจะเริ่มทำงาน หรือเมื่อมันไม่ทำงาน
สคริปต์สามารถเริ่มต้นได้ (เป็นงานพื้นหลัง ( &
ในตอนท้ายของการเรียกใช้) อาจเป็น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
}
วิธีหนึ่งในการตรวจสอบบันทึกการบริการ / ภูตที่ถ่ายทอดบนอินเทอร์เน็ตในการทำงาน ตัวอย่างเช่นการอัพเดต 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) แต่คุณกำลังมองหาการกำหนดค่าเริ่มต้นและไม่มีการปรับแต่งเพิ่มเติมใช่ไหม?