本文目录导读:

- 使用
last命令(最常用) - 使用
lastb命令(查看失败的登录尝试) - 使用
who和w命令(查看当前登录用户) - 使用
lastlog命令(显示每个用户最近登录时间) - 解析日志文件(更灵活的方式)
- 完善的Shell脚本示例
- 高级用法 - 导出特定格式的登录报告
- 实用技巧
- 注意事项
在Shell脚本中查看用户登录历史,主要有以下几种方法和命令:
使用 last 命令(最常用)
#!/bin/bash # 查看所有用户登录历史 echo "=== 用户登录历史 ===" last # 查看特定用户的登录历史 last -n 10 # 最近10条 last root # 仅查看root用户 last -f /var/log/wtmp # 指定日志文件
使用 lastb 命令(查看失败的登录尝试)
#!/bin/bash # 查看失败的登录尝试 echo "=== 失败的登录尝试 ===" lastb
使用 who 和 w 命令(查看当前登录用户)
#!/bin/bash # 当前登录的用户 echo "=== 当前登录用户 ===" who echo "---" w
使用 lastlog 命令(显示每个用户最近登录时间)
#!/bin/bash # 显示所有用户的最近登录 echo "=== 用户最近登录 ===" lastlog # 特定用户的最近登录 lastlog -u username
解析日志文件(更灵活的方式)
#!/bin/bash
# 解析/var/log/secure日志文件
echo "=== 从日志文件中提取SSH登录信息 ==="
grep "Accepted password" /var/log/secure | awk '{print $1, $2, $3, $9, $11}'
# 查看特定日期的登录
grep "Mar 15" /var/log/secure | grep "Accepted"
完善的Shell脚本示例
#!/bin/bash
# 获取用户登录历史的Shell脚本
echo "========================================="
echo " 用户登录历史查看工具"
echo "========================================="
# 显示选项菜单
echo "请选择查看方式:"
echo "1) 查看所有用户登录历史"
echo "2) 查看失败登录尝试"
echo "3) 查看当前登录用户"
echo "4) 查看用户最近登录"
echo "5) 查看特定用户登录历史"
echo "0) 退出"
echo "-----------------------------------------"
read -p "请输入选择 (0-5): " choice
case $choice in
1)
echo "=== 所有用户登录历史 ==="
last -n 20
;;
2)
echo "=== 失败的登录尝试 ==="
lastb -n 10
;;
3)
echo "=== 当前登录用户 ==="
who
echo "详细状态:"
w
;;
4)
echo "=== 用户最近登录 ==="
lastlog | head -20
;;
5)
read -p "请输入用户名: " username
echo "=== 用户 $username 的登录历史 ==="
last -n 10 $username
;;
0)
echo "退出程序"
exit 0
;;
*)
echo "无效选择,请输入0-5之间的数字"
exit 1
;;
esac
高级用法 - 导出特定格式的登录报告
#!/bin/bash
# 生成登录报告脚本
OUTPUT_FILE="login_report_$(date +%Y%m%d).txt"
{
echo "登录报告 - 生成时间: $(date)"
echo "=========================================="
echo ""
echo "1. 当前登录的用户:"
who | wc -l
who
echo ""
echo "2. 最近10次登录:"
last -n 10
echo ""
echo "3. 失败的登录尝试 (最近5次):"
lastb -n 5
echo ""
echo "4. 所有用户的最近登录:"
lastlog | grep -v "Never"
} > $OUTPUT_FILE
echo "报告已生成: $OUTPUT_FILE"
实用技巧
统计特定用户的登录次数
#!/bin/bash # 统计特定用户登录次数 user="root" count=$(last $user | wc -l) echo "用户 $user 登录了 $count 次"
查看特定时间段的登录
#!/bin/bash # 查看本月登录记录 last -s $(date -d "2024-03-01" +%Y-%m-%d) -t $(date +%Y-%m-%d)
安全审计脚本
#!/bin/bash
# 检测异常登录
echo "=== 检测异常登录 ==="
# 失败的登录尝试太多
fail_count=$(lastb | wc -l)
if [ $fail_count -gt 50 ]; then
echo "警告:失败登录次数过多 ($fail_count次)"
fi
# 非工作时间登录
echo "非工作时间(22:00-06:00)的登录:"
last | grep -E "22:[0-9]{2}|23:[0-9]{2}|0[0-9]:[0-9]{2}|1[0-9]:[0-9]{2}|2[0-9]:[0-9]{2}" | head -20
注意事项
- 需要root权限才能查看完整的登录历史
- 日志文件位置可能因Linux发行版而异
- 某些系统可能使用
btmp而非wtmp - 日志文件可能被轮转,需要检查
.old或编号文件
这些命令和脚本可以帮助你有效地查看和分析用户登录历史,适用于系统审计和安全监控。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播