📜  用于查找用户登录的终端数量的 Shell 脚本(1)

📅  最后修改于: 2023-12-03 15:11:17.162000             🧑  作者: Mango

介绍

本篇文章介绍如何编写一个 Shell 脚本来查找用户登录的终端数量。该脚本可以作为系统管理员进行用户管理的一个工具。在这个工具中,管理员可以查看每个用户登录的终端数量,以及终端类型。

代码实现

这个 Shell 脚本可以通过 w 命令来实现,w 命令可以显示登录用户的相关信息,包括用户所在终端和登录时间。我们可以通过对 w 命令的输出进行一些处理,来实现查找用户登录的终端数量。

下面是脚本的代码片段:

#!/bin/bash

# 获取当前登录的用户列表
users=$(w | awk 'NR>2{print $1}')

# 查找用户登录的终端数量
for user in $users
do
  # 统计终端数量
  terminal_count=$(w -h $user | wc -l)

  # 输出结果
  echo "$user has $terminal_count terminals:"
  w -h $user | awk '{printf "  %s\t%s\n", $2, $3}'
done

脚本执行后,会输出每个用户登录的终端数量和终端类型。输出格式如下:

user1 has 3 terminals:
  pts/0   2022-01-01 12:00:00
  tty1    2022-01-01 10:00:00
  tty2    2022-01-01 10:30:00
user2 has 1 terminals:
  tty3    2022-01-01 11:00:00
脚本解析

脚本的具体实现流程如下:

  1. 使用 w 命令获取当前登录的用户列表,包括用户名、登录时间、登录终端等信息。
  2. 对获取到的用户列表进行遍历,使用 w 命令查找每个用户登录的终端数量。
  3. 输出每个用户登录的终端数量和终端类型。

其中,第二步中,我们使用 w -h $user 命令来获取指定用户的登录信息,-h 参数表示不显示标题行,也就是不显示列名。使用 wc -l 命令来统计行数,也就是终端数量。

第三步中,我们使用 awk 命令来格式化输出信息,可以使用 printf 函数来输出格式化字符串。

结论

以上就是一个简单的 Shell 脚本,可以用于查找用户登录的终端数量。这个脚本依赖于 w 命令,因此在使用之前需要确保该命令可用,可以在终端中输入 w 命令来检查。该脚本可以用于系统管理员进行用户管理,在了解每个用户登录情况的同时,可以保障系统安全。