그룹에 사용자가 없는지 확인하고 삭제하는 방법은 무엇입니까?

그룹에 사용자가 없는지 확인하고 삭제하는 방법은 무엇입니까?

그룹에 사용자가 없는지 확인하고 삭제하는 방법은 무엇입니까?

bash Linux 스크립트를 작성 중인데 groupdel 명령을 사용하여 그룹을 삭제해야 하는데 삭제되는 그룹이 비어 있고 사용자가 없는지 확인해야 합니다.

이것이 내가 한 일입니다:

  bajagroup () {
printf "\ nEnter the name of the group to delete: \ n"
read -r remove group
[ -n $ deletegroup ] && groupdel $ deletegroup
if [ $? -ne 0 ]; then
                 echo "The group was not deleted from the system. Please try again."
         else
                 echo "The group was deleted from the system."
fi
sleep 3
}

--only-if-empty 옵션이 있는 delgroup 명령과 유사하지만 groupdel 명령이 있습니다.

예:delgroup --only-if-empty

답변1

Linux에서 그룹의 멤버십을 얻는 것은 생각만큼 쉽지 않습니다. 제 생각에는 가장 쉬운 방법은 명령을 사용하는 것입니다 lid. 다음을 사용하여 설치하십시오.

sudo apt-get update && sudo apt-get install libuser

그런 다음 다음을 사용하여 작동하는지 확인해야합니다.

lid -g root

명령을 찾을 수 없다는 메시지가 나타나면 다음을 시도해 보십시오.

/usr/sbin/libuser-lid -g root

당신의 스크립트를 위해

bajagroup () {
printf "\n Enter the name of the group to delete: \n"
read -p groupname #the variable has to be one word(normally)
deletegroup=$(lid -g $groupname)
[ -z $deletegroup ] && groupdel $deletegroup #between $ and the name no space

편집하다

패키지를 설치할 수 없으므로 문제를 해결하기 위해 작은 스크립트를 작성했습니다.

#!/bin/bash
read -p "Enter groupname here: " groupname #Takes the input and save it to the variable groupname
gid=$(cat /etc/group | grep ^"$groupname": | cut -d":" -f3) #get the content of /etc/group (list of every group with groupid) | search for the line that starts with $groupname: (That means if a group name is Test, Test1 or 1Test wouldn't be matched) | get the groupid
member=$(cat /etc/passwd | cut -d":" -f4 | grep -x "$gid") #get the content of /etc/passwd (list of all users with some extra information like the attached gid) | get the part with the gid | grep the line that is exactly $gid
[ -z $member ] && groupdel $groupname #if $member is empty then delete that group

이것이 당신에게 필요한 기초입니다. 필요에 따라 끝과 시작을 변경할 수 있습니다.

관련 정보