基本上,我需要检查文件以查看用户名是否出现多次,如果是,则将该用户名放入不同的文件中。
最后,脚本每3秒检查一次用户是否登录多次,如果是,则将其名称添加到名为user.deny的文件中。
这就是我目前的基本情况:
who -q > temp.file
if [ user occurs more than once in temp.file ]; then
that username > user.deny
fi
我只是想知道一种检查临时文件的方法,以查找多次出现的所有单词/名称。我无法使用grep
,因为这需要一种模式。
提前致谢。
答案 0 :(得分:1)
您可以使用sort
,uniq
和awk
执行此操作:
who | awk '{print $1} '| sort | uniq -c | awk '{ if($1 > 1) {print $2} }' >> user.deny
如果要在添加用户名之前进行一些检查,可以将其包装在循环中:
for u in $(who | awk '{print $1} '| sort | uniq -c | awk '{ if($1 > 1) {print $2} }')
do
grep "$u" user.deny || echo "$u" >> user.deny
done
答案 1 :(得分:0)
$ who |
ruby -ane 'BEGIN { h = Hash.new(0) };
h[$F[0]] += 1;
END { puts h.select { |k,v| v > 1 }.keys.join ?\n }' > user.deny