คำสั่ง“ ล่าสุด”: จะแสดงชื่อผู้ใช้ล่าสุดได้อย่างไร?


19

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

คำถามของฉันคือฉันจะแสดงผู้ใช้ล่าสุดที่ลงชื่อเข้าใช้เมื่อเร็ว ๆ นี้ได้อย่างไรพูด (ธันวาคม 2013 ถึงมกราคม 2014)


คุณสามารถตรวจสอบว่า/var/log/wtmpไฟล์นั้นมีอยู่และใช้เวลาในการเปลี่ยนแปลงครั้งล่าสุดstatหรือไม่
mkc

นอกจากนี้โปรดทราบว่ารายการล่าสุดในผลลัพธ์ของคำสั่งสุดท้ายจะอยู่ด้านบนสุด
mkc

ต่อไปที่จะทำให้มันลงไปที่ด้านล่าง?
โทมัส

1
ลองlast | tac
mkc

1
เพียงแค่ทำสถิติ:stat /var/log/wtmp
mkc

คำตอบ:


15

lastอ่านจากไฟล์บันทึกโดยปกติแล้วจะ/var/log/wtmpพิมพ์รายการของความพยายามในการเข้าสู่ระบบที่ประสบความสำเร็จโดยผู้ใช้ในอดีต ผลลัพธ์เป็นเช่นนั้นรายการผู้ใช้ที่เข้าสู่ระบบครั้งล่าสุดจะปรากฏขึ้นที่ด้านบน ในกรณีของคุณบางทีมันก็ออกมาสังเกตเพราะเหตุนี้

ในการตรวจสอบว่าไฟล์/var/log/wtmpถูกเขียนครั้งสุดท้ายเมื่อใดคุณสามารถใช้statคำสั่ง:

stat /var/log/wtmp

เพื่อที่จะพิมพ์ผลลัพธ์ในสิ่งที่ตรงกันข้ามคุณสามารถไพพ์เอาท์พุทสุดท้ายถึงGNU tac(ตรงข้ามของแมว) ดังนี้:

last | tac

16

คุณยังสามารถใช้คำlastlogสั่ง command บน Linux มันทำให้คุณมีการควบคุมที่ละเอียดยิ่งขึ้นเช่นช่วงวันที่เมื่อดูผ่านบันทึกการเข้าสู่ระบบของผู้ใช้

ตัดตอนมาจากหน้าคนล่าสุด

   lastlog - reports the most recent login of all users or of a given user

ตัวอย่าง

เพื่อค้นหาผู้ใช้ที่เข้าสู่ระบบใน 100 วันล่าสุด

$ lastlog -b 0 -t 100
Username         Port     From             Latest
sam              pts/0    pegasus          Wed Jan  8 20:32:25 -0500 2014
joe              pts/0    192.168.1.105    Thu Dec 12 12:47:11 -0500 2013

สิ่งนี้แสดงให้เห็นว่าครั้งล่าสุดที่ผู้ใช้เหล่านี้ลงชื่อเข้าใช้ระบบนี้ ช่วงเวลาแสดง 100 วันล่าสุด ก่อนวันนี้ ( -b 0) และหลังจาก 100 วันก่อน ( -t 100)

นอกจากนี้คุณยังสามารถแสดงผู้ใช้ทั้งหมดโดยข้ามช่วงและเพียงแค่เห็นทุก usre ที่เคยเข้าสู่ระบบและครั้งสุดท้ายที่พวกเขาเข้าสู่ระบบ


0

คุณสามารถลองใช้สคริปต์นี้:

for user in $( awk -F: '{ print $1}' /etc/passwd)
do
lastlog=$(sudo lsuser -a time_last_login $user | awk -F'=' '{print $NF}')
echo "$user         \c"; perl -le "print scalar localtime($lastlog);"
done

1
ยินดีต้อนรับสู่ Unix.SE คุณช่วยอธิบายข้อดีของวิธีการนี้ได้มากกว่าคำตอบที่มีอยู่ถ้ามี?
Stephen Kitt

สคริปต์นี้จะให้เวลาการบันทึกล่าสุดสำหรับผู้ใช้ทั้งหมดใน UNIX (AIX)

ขอบคุณสำหรับข้อมูล; โปรดแก้ไขคำตอบของคุณเพื่อพูดถึงเรื่องนั้น โปรดทราบด้วยว่าคำถามนั้นเกี่ยวกับ CentOS ไม่ใช่ AIX
Stephen Kitt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.