سؤال كيف يمكنني استخراج محفوظات تسجيل الدخول؟


أحتاج إلى معرفة محفوظات تسجيل الدخول لمستخدم معين (أي وقت تسجيل الدخول والخروج) ، كيف يمكنني استخراج هذا السجل لنطاق زمني محدد في Linux؟


81
2017-08-28 08:00


الأصل




الأجوبة:


يمكنك أن تجرب last أمر:

last john 

يطبع سجل الدخول / الخروج للمستخدم جون. في حين يركض فقط

last

يطبع سجل الدخول / الخروج لجميع المستخدمين.


116
2017-08-28 08:11



هذا فقط بإرجاع قيم الشهر الحالي في معظم توزيعات Linux. - ewwhite


إذا كنت بحاجة إلى العودة إلى التاريخ أكثر من شهر واحد ، فيمكنك قراءة /var/log/wtmp.1 ملف مع last أمر.

last -f wtmp.1 john سوف تظهر تاريخ تسجيل الدخول للشهر السابق للمستخدم john.

لا يكون خرج السجل الأخير ثقيلًا جدًا ومن السهل نسبياً تحليله ، لذا ربما أرغب في توجيه الإخراج إلى grep للبحث عن نمط تاريخ محدد.

last john | grep -E 'Aug (2[0-9]|30) ' لإظهار 20-30 أغسطس. أو شيء من هذا القبيل:

last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) ' للحصول على 10-30 تموز لمستخدم john.


40
2017-08-28 08:54





كيفية استخراج محفوظات تسجيل الدخول لنطاق زمني محدد في Linux؟

مثال لسرد جميع مستخدمي تسجيل الدخول من 25 إلى 28 / أغسطس:

last | while read line
do
    date=`date -d "$(echo $line | awk '{ print $5" "$6" "$7 }')" +%s`
    [[ $date -ge `date -d "Aug 25 00:00" +%s` && $date -le `date -d "Aug 28 00:00" +%s` ]] && echo $line
done
  • awk '{ print $5" "$6" "$7 }' لاستخراج وقت التاريخ في العمود المقابل من last انتاج
  • +%s لتحويل وقت إلى وقت Epoch
  • -ge الوقوف لأكثر من أو يساوي
  • -le الوقوف لأقل من أو يساوي

يمكنك أيضًا القيام بذلك لمستخدم معين last <username>.


18
2017-08-28 08:50



هذا تعبير قبيح. لن grep أنظف منذ ذلك الحين last الناتج هو مقروء جدا؟ - ewwhite
هل تستطيع grep من "Aug 15 09:00" إلى "Aug 25 21:00"؟ - quanta
لم يطلب البروتوكول الاختياري نطاقات زمنية. - ewwhite
ewwhite إن التعبير يبدو جميلاً بالنسبة لي ، إذا كنت لا تحب مظهر بنية bash فهذا قد لا يكون الموقع المناسب لك. - ekerner
ekerner أنت على حق. سأذهب إلى مكان آخر ؛) - ewwhite