我正在使用grep来解析密码文件。
当我使用
grep -w "avahi" /etc/passwd
我得到两个回复
avahi
和avahi-autoipd
我还没有找到一种方法来给我独特的回应。
这个命令是一个更大的脚本的一部分,其中名称(avahi
)实际上是一个变量。
当名称rpc
和rpcuser
时,这确实有效。所以我猜它与名称中的破折号(-
)有关。
实际代码:
#!/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