आखिरी बार एक उबंटू मशीन जो इंटरनेट से जुड़ी हुई है, मैं कैसे विश्वसनीय तरीके से जांच कर सकता हूं?


24

आखिरी बार एक उबंटू मशीन जो इंटरनेट से जुड़ी हुई है, मैं कैसे विश्वसनीय तरीके से जांच कर सकता हूं?

यदि यह संभव नहीं है, तो पिछली बार जब एक उबंटू मशीन को एक नेटवर्क से जोड़ा गया है, तो यह जांचने का एक तरीका काफी अच्छा होगा।

जवाबों:


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 )"

अक्क सबसे बड़े युग के समय (दूसरे शब्दों में नवीनतम) की खोज करेगा, और तिथि इसे मानव पठनीय रूप में बदल देगी।

मुझे यह भी संदेह है कि /var/lib/NetworkManager/timestampsकनेक्शन के अंतिम समय को प्रदर्शित करने के लिए इस फाइल ( ) का उपयोग एडिटिंग कनेक्शन ग्राफिकल मेनू द्वारा किया जाता है

यहाँ छवि विवरण दर्ज करें

समस्या यह है कि यदि आप अभी भी एक एक्सेस प्वाइंट से जुड़े हैं, तो GUI रास्ता दिखाई nowनहीं देता है, वह समय जब कनेक्शन अंतिम स्थापित किया गया था


मुझे फ़ाइल कहाँ मिलेगी? :) यह भी जांचता है कि पिछली बार मशीन को इंटरनेट से जोड़ा गया है या आखिरी बार मशीन को नेटवर्क से जोड़ा गया है? अंत में, क्या यह बाद में काम करता है?
कोस

@kos जाहिर है कि अभी भी syslog में चला जाता है। मैं थोड़ा और शोध करने जा रहा हूं, और अगर मुझे कुछ मिलता है, तो मैं अपने उत्तर को अपडेट करूंगा।
सर्गी कोलोडियाज़नी

ठीक है मैंने जाँच की man NetworkManager.conf, फ़ाइल है /etc/NetworkManager/NetworkManager.conf; यह केवल डेमॉन में लॉगिंग सक्षम करने के बाद काम करने जा रहा है, लेकिन दुर्भाग्य से मुझे यह जांचने की आवश्यकता है कि यह मानकर कि मशीन को इसके लिए कॉन्फ़िगर नहीं किया गया है। वैसे भी kern.logसमाधान के लिए +1 और पहले समाधान के लिए जो अन्य मामलों में सहायक हो सकता है
kos

2
@kos तो उस फ़ाइल में हेक्स-स्ट्रिंग = एपोच-टाइमस्टैम्प शामिल है। हेक्स स्ट्रिंग्स एक्सेस पॉइंट हैं। एपोक-टाइमस्टैम्प कनेक्शन का नवीनतम समय है। वहाँ मेरे awk संस्करण का प्रयास करें, मैंने अपना उत्तर संपादित किया है
Sergiy Kolodyazhnyy

2
@DeadChex I एक साल से बंद था :) पहले से ही सही
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या रूपांतर।
कोस

1
DHCPREQUESTविश्वसनीय नहीं है। मैं दोपहर से ऑनलाइन हूं और चूंकि मेरे पास बहुत से डीएचसीपी अनुरोध हैं।
एबी

@ लगता है कि आपने अपनी टिप्पणी में लॉग के स्थान पर गलती से उपयुक्त डाल दिया है।
श्री

@ श्री वास्तव में, वह एक पर्ची थी। सौभाग्य से ओपी उस के लिए गिर नहीं था!
कोस

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:]]। आप कौन सा संस्करण awkचला रहे हैं?
कोस

@kos अप्स, sudoहटा दिया गया। GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)
AB

ठीक है अब यह काम कर रहा है :)। +1
कोस

@ मुझे मेरी आवश्यकता है %;) यदि नीचे की पंक्ति में आउटपुट है
AB

1
मुझे पसंद नहीं है %। सभी लेकिन यह सही है!
हेलियो

2

यदि आपको ऐसा करने का "सही" तरीका नहीं मिलता है, तो आप हमेशा अपना निर्माण कर सकते हैं!

निम्नलिखित बैश फ़ंक्शन आपको बताएगा कि आप ऑनलाइन (इंटरनेट पर) हैं या नहीं।

आपको बस एक स्क्रिप्ट लिखनी होगी जो इसे (लूप में और फिर सोती है) बुलाती है और अंतिम तिथि और समय को एक फ़ाइल (ओवरराइटिंग) में रिकॉर्ड करती है, इसलिए इसका सिर्फ नवीनतम मूल्य है)।

आपको लूप में कोड जोड़ना होगा, इसलिए यह शुरू में ही चेक करता है और इसे लॉग करता है (इसलिए आपकी प्रारंभिक स्थिति सही तरीके से सेट है)।

उसके बाद, आप केवल तभी लॉग इन करेंगे जब राज्य पहली बार ऑफ़लाइन हो जाएगा और जब वह ऑफ़लाइन होने के बाद पहली बार ऑनलाइन आएगा। यह समझाने की तुलना में कोड करना आसान है। ;)

यह सटीकता में सीमित होगा कि आप लूप में कितनी देर (नींद) का उपयोग करते हैं (इसे बहुत तंग लूप होने से बचाने के लिए जो कई सिस्टम संसाधनों का उपभोग कर सकता है।) यह शुरू होने से पहले जो कुछ भी होता है उससे अनजान होगा। या जब यह नहीं चल रहा है।

स्क्रिप्ट को स्वयं शुरू किया जा सकता है (बैकग्राउंड जॉब के रूप में ( &मंगलाचरण के अंत में), संभवत: nohupइसे तब तक चालू रखने के लिए जब इसकी मूल प्रक्रिया समाप्त हो जाती है) जब आपका उपयोगकर्ता इसे आपके $ HOME / .profile फ़ाइल से चलाकर लॉग इन करता है। इसे अपने डेस्कटॉप ऑटोस्टार्ट उपयोगिता (केडीई या गनोम) के साथ शुरू करना, एक क्रॉन जॉब से जो समय-समय पर यह देखने के लिए जांचता है कि क्या यह पहले से चल रहा है, या यहां तक ​​कि आपके पास जो भी स्टार्टअप सिस्टम (init / systemd / etc) है, अगर आप ऐसा करना जानते हैं। उस।)

जब आपको ऐसा कुछ नहीं मिल सकता है, जो आप चाहते हैं, तो ऐसा करने के लिए अक्सर अपनी खुद की स्क्रिप्ट लिखना बहुत मुश्किल नहीं है और इसे पृष्ठभूमि में एक डेमॉन की तरह चलाएं।

यदि संभव हो तो इसे नियमित उपयोगकर्ता खाते से चलाना सबसे अच्छा है - जब तक कि आप इसे सी या पाइथन जैसी मजबूत भाषा में कोड नहीं करते हैं - क्योंकि शैल विशेषाधिकार मूल विशेषाधिकारों के साथ चलने से अक्सर सुरक्षा जोखिम पैदा होते हैं।

इस दृष्टिकोण का एक और मुद्दा है। कभी-कभी एक पिंग टाइमआउट आपको एक झूठी ऑफ़लाइन स्थिति देगा।

मेरे पास एक पूरी स्क्रिप्ट है, 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 (नेटवर्क टाइम प्रोटोकॉल) अपडेट।

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 डेस्कटॉप और सर्वर संस्करणों के लिए डिफ़ॉल्ट रूप से स्थापित है।

मैंने इसे वीएम में एक कोशिश दी, यह केवल समय दिखाता है जो जोड़ता है या फिर से जुड़ता है (इंटरनेट उपलब्ध है)। वह नहीं जो आप चाहते हैं (पिछली बार जुड़ा था)

ध्यान दें, syslog एक रोटेट लॉग है, यदि आप सभी लॉग को पुराने कंप्रेस्ड वाले को भी खोजते हैं, उपयोग करना चाहते हैं zgrep

zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2

यह अच्छा लग रहा है, लेकिन क्या आप पुष्टि कर सकते हैं कि यह कम से कम उबंटू डेस्कटॉप पर सक्षम है? मैं व्यक्तिगत रूप से अभी इसका परीक्षण नहीं कर सकता, लेकिन मैं वास्तव में कल करूँगा
kos

1
इसे न हटाएं, यह उपयोगी है और यह मेरे कार्यक्षेत्र के लिए अच्छा है, अगर मुझे समझ में आ गया है कि यह अंतिम बार (अधिक या कम) लगातार कनेक्शन की सूचना देगा, इसलिए यदि मैं कहे गए मशीन को 2 दिनों के लिए छोड़ देता हूं तो यह रिपोर्ट करेगा तारीख और अंतिम कनेक्शन कब बनाया गया था, (यानी 2 दिन पहले) सही? बस आखिरी बात, क्या होता है जब कोई व्यक्ति नेटवर्क से डिस्कनेक्ट करता है और फिर से जोड़ता है, कहते हैं, 5 मिनट बाद? क्या NTP जाँच फिर से चलती है? या किसी नए NTP चेक को चलाने से पहले अंतिम NTP जांच के बाद किसी प्रकार की सीमा है?
kos

1
@kos, भ्रमित मत हो, ntpdateडिफ़ॉल्ट रूप से स्थापित है , लेकिन नहीं ntpd/ openntpdडेमॉन / सेवा जो अलग पैकेज में आती है। यह जाँचने के लिए कि आप समय और दिनांक को गलत में बदल देते हैं, फिर कनेक्ट करें फिर से कनेक्ट करें।
user.dz

1
@kos, समय-समय पर अद्यतन के ntpdateसाथ इस्तेमाल किया जा सकता है cron, यह एक सेवा (ntpd / openntpd) चलाने के समान परिणाम होगा। लेकिन आप डिफ़ॉल्ट कॉन्फ़िगरेशन की तलाश कर रहे हैं और कोई अतिरिक्त ट्यूनिंग नहीं है, है ना?
user.dz

1
क्षमा करें, मैं गलत था। हां मैं एक गैर-कॉन्फ़िगर मशीन पर उपयोग करने के लिए कुछ ढूंढ रहा था। ठीक है, यह मेरे लिए काम करता है, मैं सवाल को वैसे भी खुला छोड़ दूँगा, शायद कोई हत्यारे के जवाब के साथ आए। धन्यवाद! यह एक महान कदम है। वैसे भी मन करता है कि वे लॉग कठिन हो जाएं, शायद आप उसे अपने उत्तर में जोड़ना चाहते हैं।
कोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.