שאלה כיצד ניתן לחלץ את היסטוריית ההתחברות?


אני צריך לדעת את היסטוריית ההתחברות עבור משתמש ספציפי (כלומר, זמן התחברות ו יציאה), כיצד ניתן לחלץ את ההיסטוריה הזו עבור טווח תאריכים מסוים ב- Linux?


81
2017-08-28 08:00






תשובות:


אתה יכול לנסות את last פקודה:

last john 

זה מדפיס את הכניסה / את ההיסטוריה של המשתמש john. בעוד פועל רק

last

מדפיס את הכניסה / את ההיסטוריה של כל המשתמשים.


116
2017-08-28 08:11



זה רק מחזיר ערכים עבור החודש הנוכחי ברוב הפצות לינוקס. - 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 כדי להמיר datetime ל זמן אפוק
  • -ge לעמוד יותר או שווה
  • -le לעמוד פחות או שווה

אתה יכול גם לעשות את זה עבור משתמש ספציפי עם last <username>.


18
2017-08-28 08:50



זה ביטוי אדיר ומכוער. לא יהיה grep להיות מנקה מאז last פלט די קריא? - ewwhite
האם אתה יכול grep מ "15 אוגוסט 09:00" ל "25 אוגוסט 21:00"? - quanta
OP לא ביקש טווחי זמן. - ewwhite
@ whwhite הביטוי נראה יפה לי, אם אתה לא אוהב את המראה של תחביר bash זה לא יכול להיות האתר בשבילך. - ekerner
@ekerner אתה צודק. אני אלך למקום אחר;) - ewwhite