📅  最后修改于: 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
脚本的具体实现流程如下:
其中,第二步中,我们使用 w -h $user 命令来获取指定用户的登录信息,-h 参数表示不显示标题行,也就是不显示列名。使用 wc -l 命令来统计行数,也就是终端数量。
第三步中,我们使用 awk 命令来格式化输出信息,可以使用 printf 函数来输出格式化字符串。
以上就是一个简单的 Shell 脚本,可以用于查找用户登录的终端数量。这个脚本依赖于 w 命令,因此在使用之前需要确保该命令可用,可以在终端中输入 w 命令来检查。该脚本可以用于系统管理员进行用户管理,在了解每个用户登录情况的同时,可以保障系统安全。