0

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

当我使用

grep -w "avahi" /etc/passwd

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

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

当名称为rpcand时,这确实有效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。其余的将是未设置密码但允许在系统上使用的实际用户。

4

2 回答 2

4

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

$ grep "^avahi:" /etc/passwd
于 2017-01-05T21:58:19.183 回答
0

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

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

于 2017-01-09T18:37:08.820 回答