我正在编写一个shell脚本,用于查找文件“/etc/user.deny
”中的用户列表,并且如果多次遇到用户名,程序将报告一条出口错误消息。到目前为止,我有:Shell脚本拒绝用户登录多次
while read user
do
#something
done < ./etc/user.deny
我该如何比较每个用户名。有没有简单的方法来做到这一点?
我正在编写一个shell脚本,用于查找文件“/etc/user.deny
”中的用户列表,并且如果多次遇到用户名,程序将报告一条出口错误消息。到目前为止,我有:Shell脚本拒绝用户登录多次
while read user
do
#something
done < ./etc/user.deny
我该如何比较每个用户名。有没有简单的方法来做到这一点?
我觉得他要杀死所有重复登录
#!/bin/bash
#creat a sorted list
who -u | sort -k1,5 -r > userlogins.txt
#
user=""
olduser=""
# read userlist
cat userlogins.txt | while read line; do
# [0] of array is the username
# [1] is terminal
# [3] is login date
# [4] is PID
user=($line)
# echo ${user[0]}
#
# kill terminal if user has more than one login
if [$olduser = ${user[0]}]; then
echo ${user[0]} duplicate
pkill -t ${user[1]}
fi
# remember old user
olduser="${user[0]}"
done
不幸的是我有没有可能在目前来测试这个脚本。
既然你提到了重复登录,我想OP会拒绝后续登录,如果用户已经登录。那么也许它会是'/ etc/profile'执行的脚本。 – alvits
@亚历山大Baltasar嗨,我试了脚本,但我错误第17行:[:失踪]''任何想法是什么错,事先感谢。 =) –
'/ etc/user.deny'的格式是什么?可能排序和排序就足够了 – fedorqui
不幸的是,这是一个实验室,并且该文件不是真实的,但我相信该文件将只在每行只有一个用户名,这就是它 – coopwatts
尝试'sort/tmp/test | uniq -c | sed -n's/^ [^ 0-9] \ + [2-9] \ + \(。* \)$/\ 1/p''。 – alvits