从/ etc / passwd预测特定范围内的新用户的UID

时间:2018-05-18 07:17:11

标签: shell sorting awk

我必须在/ etc / passwd中创建UID范围为8000到9000的用户。有没有办法预测下一个用于命令行的UID。

我知道下面的命令为我提供了在passwd文件中存在的最后一个UID之后使用的UID:

awk -F: 'BEGIN {maxuid=0;} {if ($3 > maxuid) maxuid=$3;} END {print maxuid+1;}' /etc/passwd

我需要在命令行中更改什么才能在8000 - 9000范围内使用下一个UID?

提前致谢

2 个答案:

答案 0 :(得分:0)

根据您的陈述,基于您的陈述并不清楚可以帮助您。

解决方案1: 如果您要打印UID介于80009000之间的所有用户条目,则:

awk -F":" '$3>=8000 && $3<=9000' /etc/passwd

解决方案第二: 如果您需要最大uid数介于8000到9000 uid之间,那么以下内容可能有所帮助。

awk -F":" '$3>=8000 && $3<=9000{max=max>$3?max:$3} END{if(max){print max} else {print "No uid in between 80000 to 9000"}}' /etc/passwd

答案 1 :(得分:0)

这将填充第一个可用的ID,即使在使用的ID中有空洞(例如使用了8000和8002但是8001不是,因此应该选择使用的下一个ID):

awk -F: '
    { used[$3] }
    END {
        avail = 0
        for (i=8000; i<=9000; i++) {
            if ( !(i in used) ) {
                avail = i
                break
            }
        }
        print avail
    }
' /etc/passwd