Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用于拒绝用户多次登录的Shell脚本_Linux_Bash_Shell - Fatal编程技术网

Linux 用于拒绝用户多次登录的Shell脚本

Linux 用于拒绝用户多次登录的Shell脚本,linux,bash,shell,Linux,Bash,Shell,我正在编写一个shell脚本,该脚本在文件“/etc/user.deny”中查找用户列表,如果多次遇到用户名,程序将报告错误消息并退出。到目前为止,我已经: while read user do #something done < ./etc/user.deny 读取用户时 做 #某物 完成

我正在编写一个shell脚本,该脚本在文件“
/etc/user.deny
”中查找用户列表,如果多次遇到用户名,程序将报告错误消息并退出。到目前为止,我已经:

while read user 
do
   #something
done < ./etc/user.deny
读取用户时
做
#某物
完成

如何比较每个人的每个用户名。有没有一种简单的方法可以做到这一点?

如果您想在一行出现多次时报告,那么您可能需要单独使用
awk

awk 'seen[$0]++ {print "seen more than once: ", $0; exit}' file

在数组
seen[]
中,我们存储每行出现的时间。如果其中一个出现多次,则会触发
print
exit
语句。否则,它会安静地结束。

我想他想杀死所有重复登录

#!/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

很遗憾,我目前无法测试此脚本。

什么是
/etc/user.deny的格式?可能排序和排序就足够了不幸的是,这是一个实验室,文件不是真实的,但我相信文件每行只有一个用户名,这就是itTry
sort/tmp/test | uniq-c | sed-n's/^[^0-9]\+[2-9]\+\(.\)$/\1/p'
@alvits使用awk:
awk'$1>1检查数字总是更好{打印$2}“
sort/etc/user.deny | uniq-d
是一个更简洁的单行程序。任何打印的内容都会出现不止一次。这是多个用户多次出现的工作,还是在第一个用户多次看到时就退出?一旦找到第一个重复项就退出。这不是要求吗?既然你提到了dup简单的登录,我想如果用户已经登录,OP会拒绝后续登录。因此,可能是由
/etc/profile
@Alexander Baltasar Hi执行的脚本,我尝试了该脚本,但我发现错误行17:[:missing]'`知道有什么问题吗,提前谢谢。=)