Skript pro UID podruhe...
Pavel Prchal
pavel na pelhrim.cz
Pátek Září 22 10:40:00 CEST 2000
Skleroza zije....
#!/bin/bash
##
# Skript pro zjisteni prvniho volneho UID ze skupiny uzivatelu
# Autor: Pavel Prchal (pavel na pelhrim.cz)
# Pouziti: ./getfreeuid jmeno_skupiny
# Pocita se s tim, ze uzivatele, ve kterych je volne UID hledano,
# maji stejnou skupinu, t.j:
## /etc/passwd
# a:x:200:200:::
# b:x:201:200:::
# c:x:202:200:::
## /etc/group
# somegrp:x:200:
##
# zjistene volne UID vypise na standartni vystup. Pokud skupina neexistuje,
# vypise "err"
############################################################################
if [ "$1" = "" ]; then
echo "Not enough parameters"
echo "ussage: ./getfreeuid [group_name]"
exit
fi
# Testni, jestli skupina existuje
foundGroup=`cat /etc/group | grep "^$1:" | cut -f1 -d":"`
if [ "$foundGroup" != "$1" ]; then
echo "err"
exit
else
# Ze jmena skupiny vypreparuj jeji cislo
foundGID=`cat /etc/group | grep "^$1:" | cut -f3 -d":"`
fi
# Cislo skupiny predej AWKu jako jeho promennou GIDSTART
cat /etc/passwd | awk \
-v GIDSTART="$foundGID" \
'BEGIN{
FS=":";
UIDSTART=GIDSTART; /* od jakeho UID se ma zacit prohledavat */
}
{
/* Napln pole ve stylu: uidArr[uid]=logname (pouze pro danou skupinu) */
if($4==GIDSTART)
uidArr[$3]=$1;
}
END{
/* ------------------------------ */
/* Najdi prvni nejnizsi volne UID */
/* ------------------------------ */
uid=UIDSTART;
uidFound=1;
while(uidFound){
uidFound=0;
for(i in uidArr){
if(uid == i){ /* UID jiz existuje, zvys a prerus zbytecnou smycku */
uidFound=1;
uid++;
break;
}
}
}
print uid;
}'
Další informace o konferenci Linux