我需要在密码文件中grep中寻找一个确切的单词,但我得到了两个回复



我正在使用grep来解析密码文件。

当我使用

grep -w "avahi" /etc/passwd

我得到两个回复
avahiavahi-autoipd
我还没有找到一种方法来给我独特的回应。

这个命令是一个更大的脚本的一部分,其中名称(avahi)实际上是一个变量。

当名称rpcrpcuser时,这确实有效。所以我猜它与名称中的破折号(-)有关。

实际代码:

#!/bin/ksh
getent shadow |cut -d: -f1-2|grep ':!!'| cut -d: -f1 > /tmp/pasck
while read line
do 
   NOLOGIN=`grep -w $line /etc/passwd | cut -d -f7|cut -d/ -f3`
if [[ $NOLOGIN != "nologin: && $NOLOGIN != "false" ]] ; then
echo "$line" "$NOLOGIN" >> /tmp/pasck.list
fi
done <?tmp/pasck

该脚本正在尝试遍历影子文件并查找没有密码的用户。然后,我将结果与passwd文件进行比较,以查找哪些帐户设置为/bin/false/sbin/nologin。其余将是未设置密码但在系统上允许的实际用户。

保持简单 - 您可以在grep语句中包含用户名后面的冒号:

$ grep "^avahi:" /etc/passwd

您可以使用 awk 并显式测试第一个冒号分隔的字段:

awk -F: '$1 = "avahi"' /etc/passwd

相关内容

最新更新